所以我必须kinit
使用他的keytab在本地作为某个主体。
由于远程服务器上的Kerberose kdc(我在vpn上访问),我需要使用ssh
来访问服务器,从而对服务进行隧道传输。
为此,我做了以下事情:
由于我需要访问该服务:
ssh -L1088:localhost:88 -L10749:localhost:749 remote_server
将本地文件krb5.conf更改为
admin_server = localhost:10749
kdc = localhost:1088
但是当我尝试开始
时KRB5_TRACE=/dev/stdout kinit -kt ${PRINCIPAL_KEYTAB}.keytab ${PRINCIPAL_NAME}
[12332] 1504171391.121253: Getting initial credentials for ${PRINCIPAL_NAME}
[12332] 1504171391.123940: Looked up etypes in keytab: des, des-cbc-crc, aes128-cts, rc4-hmac, aes256-cts, des3-cbc-sha1
[12332] 1504171391.124027: Sending request (227 bytes) to ${DOMAIN}
[12332] 1504171391.124613: Resolving hostname localhost
[12332] 1504171391.124988: Sending initial UDP request to dgram ::1:1088
[12332] 1504171391.125070: Sending initial UDP request to dgram 127.0.0.1:1088
[12332] 1504171391.125120: Initiating TCP connection to stream ::1:1088
[12332] 1504171391.125165: Terminating TCP connection to stream ::1:1088
[12332] 1504171391.125186: Initiating TCP connection to stream 127.0.0.1:1088
[12332] 1504171391.125216: Terminating TCP connection to stream 127.0.0.1:1088
kinit: Cannot contact any KDC for realm '${DOMAIN}' while getting initial credentials
我通过添加ssh -vvv
并获得了
debug1: Connection to port 1088 forwarding to localhost port 88 requested.
debug2: fd 15 setting TCP_NODELAY
debug2: fd 15 setting O_NONBLOCK
debug3: fd 15 is O_NONBLOCK
debug1: channel 7: new [direct-tcpip]
debug3: send packet: type 90
debug1: Connection to port 1088 forwarding to localhost port 88 requested.
debug2: fd 16 setting TCP_NODELAY
debug2: fd 16 setting O_NONBLOCK
debug3: fd 16 is O_NONBLOCK
debug1: channel 8: new [direct-tcpip]
debug3: send packet: type 90
我尝试了tcpdump,并在本地尝试连接,但无法找到收到其他网站的任何包。
我编辑了krb5.conf中的所有其他信息。
我在这里缺少什么,或者这有可能吗?
PS:
netstat
表示端口已存在并在两台计算机上都已打开。
我对服务器本身的kinit
没有问题。
PSS:
从我看到的kdc实际上是在端口udp 88
监听而不是tcp,这可能是个问题吗?
答案 0 :(得分:2)
我毕竟使用socat
和ssh
解决了以下问题,以及几个教程:
我们收到udp
个套餐到1088,但ssh
个隧道只有tcp
,所以socat
我们可以"转换"它们:
locally$ socat -T15 udp4-recvfrom:1088,reuseaddr,fork tcp:localhost:1089
现在我们通过
创建该端口的ssh隧道到远程服务器locally$ ssh -L1089:localhost:1089 remote_server
之后我们将到达1089的tcp
个包转换为udp
并将它们重定向到端口88的kdc
server$ socat tcp4-listen:1088,reuseaddr,fork UDP:localhost:88
答案 1 :(得分:1)
您不必强迫UDP通信,也可以强制kerberos仅使用tcp,如下所示:
[realms]
MY.REALM = {
kdc = tcp/localhost:1088
master_kdc = tcp/localhost:1088
admin_server = tcp/localhost:1749
}
现在像以前一样设置您的tcp / ssh隧道:
ssh -L1088:kdc.server:88 -L1749:kdc.server:749 ssh.hop