具有多个用户名的两跳 SSH

具有多个用户名的两跳 SSH

我正在尝试设置一个 ssh 代理命令,其中最终主机上的用户名与原始主机上的用户名不同。我以用户名身份登录 firstHost,并希望有效地运行此命令:

ssh middle ssh othername@target

我希望能够做到这一点

ssh target

这个帖子建议使用代理命令,通过 ssh 连接到目标,在目标上运行 nc。这样可以建立连接,但不使用我设置的无密码 ssh。有没有办法让它与无密码 ssh 一起工作?(有没有理由使用 nc 而不是使用代理命令ssh middle ssh othername@target?)

firstHost 上的 .ssh/config 如下所示:

Host middle
HostName middle.domain

Host target
User othername
Proxycommand ssh middle ssh [email protected] nc localhost 22

firsthost 的 ssh -vv target 的输出是

debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec ssh middle ssh [email protected] nc localhost 22
debug1: identity file /home/username/.ssh/identity type -1
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug2: key_type_from_name: unknown key type '-----END'
debug1: identity file /home/username/.ssh/id_rsa type 1
debug1: identity file /home/username/.ssh/id_dsa type -1
debug1: loaded 3 keys
login banner from middle
login banner from target
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3
debug2: fd 5 setting O_NONBLOCK
debug2: fd 4 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes256-ctr
debug2: kex_parse_kexinit: aes256-ctr
debug2: kex_parse_kexinit: hmac-sha1
debug2: kex_parse_kexinit: hmac-sha1
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_init: found hmac-sha1
debug1: kex: server->client aes256-ctr hmac-sha1 none
debug2: mac_init: found hmac-sha1
debug1: kex: client->server aes256-ctr hmac-sha1 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<4096<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 275/512
debug2: bits set: 1987/4096
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'target' is known and matches the RSA host key.
debug1: Found key in /home/username/.ssh/known_hosts:16
debug2: bits set: 2053/4096
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug2: cipher_init: set keylen (16 -> 32)
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug2: cipher_init: set keylen (16 -> 32)
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/username/.ssh/identity ((nil))
debug2: key: /home/username/.ssh/id_rsa (0x2b9c1e95c4d0)
debug2: key: /home/username/.ssh/id_dsa ((nil))
login banner
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: An invalid name was supplied
Hostname cannot be canonicalized

debug1: An invalid name was supplied
Hostname cannot be canonicalized

debug1: An invalid name was supplied
Hostname cannot be canonicalized

debug2: we did not send a packet, disable method
debug1: Next authentication method: publickey
debug1: Trying private key: /home/username/.ssh/identity
debug1: Offering public key: /home/username/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/username/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password

答案1

alias sshTarget="ssh -tA middle ssh -l othername target"

更新

ssh -N -L 4441:othername:22 middle 
scp -P 4441 /documents/foo localhost:/backup/

答案2

2016 年,SSH 添加了一些快捷方式,使其变得非常简单。您无需ProxyCommand使用 netcat,只需ProxyJump middle在 Host 块中输入“目标”即可。每个服务器都可以拥有自己的用户和几乎任何其他参数ssh_config(5)。您也可以将跳转链接在一起。

如果你不想设置配置,你可以在 CLI 上使用以下命令完成所有操作-J

ssh -J me@middle othername@target

但你应该设置一下配置。然后你只需要输入ssh target,一切就会透明地运行。

相关内容