如何将ssh密钥迁移到新的CentOS服务器?

我们有很多通过保存(无密码)密钥对在ssh上运行的脚本。 客户端和服务器都是CentOS 6.x我知道,如果你得到一个新的客户端计算机(脚本运行的地方),你可以将旧计算机的〜/ .ssh / known_hosts复制到新的计算机上。

但是,如果我正在更换该工作站所连接的服务器,我该如何复制以保存密钥对? 我试图复制/ etc / ssh的内容。 我这样做后,我不再有“改变了”拒绝连接客户端,但我仍然不得不input密码。

我GOOGLE了这一点,找不到多less。 我究竟做错了什么?

当你创build一个私钥时,它也会创build一个匹配的公钥。

私钥/公钥对的理念是保持私钥安全(不要通过networking,互联网,甚至允许其他用户阅读)。

公钥是您要连接的服务器上存储的内容。

所以当你通过ssh连接到服务器时,你需要在服务器上提供私钥和用户login,如下所示: ssh -i ~/.ssh/path/to/your/private/key user@server

在服务器上存储你的公钥,在这里: /home/user/.ssh/authorized_keys

您可以将服务器authorized_keys文件的内容复制到另一个服务器,它只是一个包含文本的文件(每行对应一个公钥)。

SSH密钥存储在~/.ssh/authorized_keys

您应该能够将此文件从旧服务器传输到新服务器来解决您的问题。

ssh-copy-id -i .ssh / key.pub user @ server应该做的。

确保您的key.pub存在于您正在尝试进行身份validation的用户的.ssh / authorized_keys中。

你可以通过运行这个来做到这一点:

 key=$(cat ~/.ssh/key.pub) ssh user@host "cat ~/.ssh/authorized_keys" |grep $key 

如果您看到任何Grep Usage错误,请确保您的key.pubpath正确并存在。 如果没有,你可以创build一个:

 ssh-keygen -b 4096 -t rsa -f ~/.ssh/key 

如果您看不到授权密钥文件的这样的文件或目录,那么它不存在,您将需要创build它。

如果不存在,则可以通过运行以下命令将其复制:

 cat ~/.ssh/key.pub | ssh user@host "cat >> ~/.ssh/authorized_keys" 

一旦你有这个工作,最好在/ etc / ssh / sshd_conf中禁用密码validation

示例参数更改/ etc / ssh / sshd_config:

 RSAAuthentication yes PubkeyAuthentication yes PasswordAuthentication no ChallengeResponseAuthentication no 

有关在CentOS上保护SSH的更多信息,请参阅在CentOS wiki上保护OpenSSH 。