我有一台在非标准端口上运行 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前面,否则无法解析
编者注:正如评论中指出的和所示的其他答案,ssh-copy-id
由最新版本的 OpenSSH 提供,支持该-p <port_number>
语法(不需要引号)。
答案2
ssh-copy-id
不接受任何可以传递给底层ssh
命令的参数,但您可以在中配置别名~/.ssh/config
。
Host myhost
HostName hostname
Port 8129
然后跑ssh-copy-id myhost
。
答案3
从 openssh-client_6.2 开始,该命令现在有一个专用端口标志,允许使用以下语法:
ssh-copy-id -p 8129 user@example
它还添加了对使用 -o 标志添加其他 ssh 选项的支持。
以下是 13.04 中引入的相应版本的 Ubuntu 手册页:http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html
答案4
这有效(来自这里):
ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'