É possível executar ssh-copy-id na porta que não seja 22?


99

Eu tenho um servidor com SSH em execução em uma porta não padrão. Em vez de 22, é executado no 8129. Para fazer login, eu uso:

ssh -p 8129 hostname

Agora, sempre que eu precisar configurar uma chave para o login sem senha, eu tenho que copiar a chave pública e adicioná-la manualmente a allowed_keys. Descobri que o comando ssh-copy-idpoderia ser usado para simplificar esse processo, mas parece que ele não tem uma opção para especificar a porta do servidor ssh.

Existe alguma maneira de dizer ssh-copy-idpara usar a porta 8129, ou devo esquecer este comando e copiar / colar manualmente como antes?

Respostas:


112
$ ssh-copy-id "-p 8129 user@host"

Fonte: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

NOTA: A porta deve estar na frente do usuário @ host ou não será resolvida


11
É realmente estúpido, que sshtem uma sintaxe ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"e, finalmente scp -P 1234 user@host. Seria tão bom ter a mesma sintaxe.
Tombart

2
@ Tombart e, em seguida, rsync tem rsync -e "ssh -p 1234" user@host. Juro que é mais complicado do que vale a pena usar uma porta personalizada.
precisa saber é o seguinte

1
A resposta de @Colt McCormack explica que isso é aprimorado em novas versões, e essa sintaxe peculiar não é mais necessária.
meshy

1
Para sua informação, o comando full requer o IP digitado duas vezes e deve se parecer com:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
degenerate

1
No macOS (eu estou em High Sierra), as cotações não são necessárias. ie ssh-copy-id -p 8129 user@hosttrabalho.
Arjun Mehta

46

ssh-copy-idnão aceita nenhum argumento que possa ser transmitido ao sshcomando subjacente , mas você pode configurar um alias em ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Então corra ssh-copy-id myhost.


3
Isso também tem o benefício de remover a necessidade do -psinalizador em sshtentativas regulares . Portanto, não é apenas a resposta certa para esta pergunta, é a coisa certa, ponto final.
Warren Young

Obrigado por isso. A segunda linha "HostName hostname" não é necessária se você estiver satisfeito com o hostname natural do host.
Lonniebiz


11

Uma rápida olhada na fonte indica que ssh-copy-idparece não ter nenhuma função que permita isso. No entanto, você pode fazer algo como o seguinte:

ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub

6

Isso funciona ( daqui ):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'

5

Eu sempre costumava scpcopiá-lo:

scp -P 8129 ~/.ssh/id_*.pub user@host:
ssh -p 8129 user@host 'cat id_*.pub >> ~/.ssh/authorized_keys'

Embora eu deva dizer, provavelmente usarei os outros métodos (uma linha / conexão) se os lembrar no futuro. Mas essa é outra opção para você.


2

No CentOS7 é apenas:

 ssh-copy-id "-p 1234" user@host

Tome cuidado para não colocar user @ host entre aspas ou você receberá o seguinte erro nesta distribuição:

/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'

0

Com o meu macOS, isso funcionou.

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host

0

Eu uso este comando:

ssh-copy-id ssh://user@ip_addr:port

Exemplo:

ssh-copy-id ssh://root@1.2.3.4:23

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.