SSH de dois saltos com vários nomes de usuário

1

Estou tentando configurar um comando proxy ssh, em que o nome de usuário no host final é diferente do nome de usuário no host original. Estou logado no firstHost como nome de usuário e quero efetivamente executar este comando:

ssh middle ssh othername@target

Eu gostaria de poder fazer isso com

ssh target

Esta postagem sugere o uso de um comando proxy que executa um ssh para executar nc no destino. Isso faz a conexão, mas não usa o ssh sem senha que eu configurei. Existe uma maneira de fazer isso funcionar com ssh sem senha? (E existe um motivo para usar nc em vez de fazer o comando proxy ssh middle ssh othername@target?)

.ssh / config no firstHost se parece com isso:

Host middle
HostName middle.domain<br/>

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

A saída do destino ssh -vv do firsthost é

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
Troy Daniels
fonte
Portanto, se você seguiu esse post, e ele funciona além da autenticação, com certeza seria bom se você publicasse a configuração exata usada e a saída ssh -vv targetpara que possamos ver as mensagens de erro. Os exemplos sugeridos por essa resposta devem funcionar bem e são quase idênticos às minhas configurações de trabalho. Eu poderia responder a parte do porquê do Proxycommand, mas acho que a parte principal da sua pergunta é sobre a rede de autenticação na configuração de vários saltos.
Zoredache
Consulte superuser.com/a/484979/163736 para obter um exemplo de como usar um túnel SSH. Você precisará ajustar sua configuração SSH local em relação ao servidor (para conectar-se a uma porta localhost local), mas como o servidor não está diretamente acessível de qualquer maneira, isso não deve ser um problema.
Claudius

Respostas:

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

Atualizar

ssh -N -L 4441:othername:22 middle 
scp -P 4441 /documents/foo localhost:/backup/
Ярослав Рахматуллин
fonte
Isso funciona bem para o ssh segmentar, mas não permite o scp target:file local_filetrabalho.
Troy Daniels
Não vejo menção de scp na sua pergunta. Tente perguntar sobre o problema e não a solução errada que você tentou. Veja atualização.
Ярослав Рахматуллин