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

ssh -p 8129 hostname


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

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

#1 楼

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

源:http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html
注意:端口必须在前面user @ host的名称或它无法解决

编者注:如注释中指出和其他答案所示,较新版本的OpenSSH随附的ssh-copy-id支持-p <port_number>语法(无需引号) 。

评论


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

–唐巴
15年2月4日在12:58

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

–garetmckinley
2015年9月25日4:10在

@Colt McCormack的答案说明此问题在新版本中得到了改进,并且不再需要这种特殊的语法。

–麻烦
16年1月8日在11:46

仅供参考,完整命令需要输入两次IP,并且应该类似于:ssh-copy-id“ root@192.168.0.100 -p 12345” -i〜/ .ssh / id_rsa.pub 192.168.0.100

–退化
17年2月2日在2:40

在macOS(我在High Sierra上)上,不需要引号。即。 ssh-copy-id -p 8129 user @ host有效。

– Arjun Mehta
18年5月21日在15:57

#2 楼

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

Host myhost
HostName hostname
Port 8129


然后运行ssh-copy-id myhost

评论


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

–沃伦·杨(Warren Young)
2012年1月20日14:00



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

–Lonniebiz
16年8月9日在15:53

#3 楼

从openssh-client_6.2开始,该命令现在有了专用的端口标志,允许使用以下语法:

ssh-copy-id -p 8129 user@example


它还增加了对添加其他ssh选项的支持。 -o标志。这里是Ubuntu的相应版本的手册页,在13.04中进行了介绍:http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1。 html

评论


这是唯一适用的方法。

–卢卡·斯蒂布(Luca Steeb)
16年8月23日在22:13

#4 楼

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

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


#5 楼

这有效(从此处开始):

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


#6 楼

我一直使用scp进行复制:

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


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

#7 楼

在CentOS7上仅是:

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


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

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


#8 楼

在我的macOS上,此方法有效。

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


#9 楼

我使用以下命令:

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

示例:

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