是否可以在22以外的端口上运行ssh-copy-id?


99

我有一台在非标准端口上运行SSH的服务器。它运行在8129而不是22,要登录,我使用:

ssh -p 8129 hostname

现在,每当需要为无密码登录设置密钥时,都必须复制公共密钥并将其手动添加到authorized_keys。我发现该命令ssh-copy-id可用于简化此过程,但似乎没有指定ssh服务器端口的选项。

有什么方法可以告诉ssh-copy-id您使用端口8129,还是应该像以前一样忘记此命令并手动复制/粘贴?

Answers:


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

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

注意:该端口必须在user @ host前面,否则它将无法解析


11
确实很愚蠢,ssh有语法ssh -p 1234 user@hostssh-copy-id "-p 1234 user@host"最后是scp -P 1234 user@host。拥有相同的语法真是太好了。
Tombart

2
@Tombart,然后rsync具有rsync -e "ssh -p 1234" user@host。我发誓,使用自定义端口比它值得拥有的麻烦。
garetmckinley 2015年

1
@Colt McCormack的答案说明,新版本对此进行了改进,并且不再需要这种特殊的语法。
网状

1
仅供参考,完整命令要求输入两次IP,并且应类似于:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
退化

1
在macOS(我在High Sierra上)上,不需要引号。即。ssh-copy-id -p 8129 user@host作品。
Arjun Mehta,

46

ssh-copy-id不会接受任何可能传递给基础ssh命令的参数,但是您可以在中配置别名~/.ssh/config

Host myhost
HostName hostname
Port 8129

然后运行ssh-copy-id myhost


3
这还具有消除-p常规ssh尝试中对该标志的需要的好处。因此,这不仅是对这个问题的正确答案,而且是正确的时期。
沃伦·杨

谢谢你 如果您对主机的自然主机名感到满意,则不需要第二行“ HostName hostname”。
Lonniebiz '16


11

快速查看源代码,ssh-copy-id似乎似乎没有允许这样做的功能。但是,您可以改为执行以下操作:

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


5

我一直习惯scp将其复制过来:

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

尽管我必须说,但如果将来我记得它们,我可能会使用其他(单线/连接)方法。但这是您的另一种选择。


2

在CentOS7上只是:

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

请注意不要将user @ host放在引号内,否则在此发行版中将出现以下错误:

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

0

在我的macOS上,这可行。

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

0

我使用以下命令:

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

例:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.