我如何设置公钥authentication?

如何为SSH设置公钥authentication?

如果你安装了SSH,你应该可以运行..

ssh-keygen 

然后通过这些步骤,您将有两个文件, id_rsaid_rsa.pub (第一个是您的私钥,第二个是您的公钥 – 您复制到远程计算机的公钥)

然后,连接到你想要login的远程机器,到文件~/.ssh/authorized_keys添加你的那个id_rsa.pub文件的内容。

哦,和chmod 600所有id_rsa*文件(本地和远程),所以没有其他用户可以读取它们:

 chmod 600 ~/.ssh/id_rsa* 

同样,确保~/.ssh/authorized_keys文件也是chmod 600

 chmod 600 ~/.ssh/authorized_keys 

然后,当你做ssh remote.machine ,它应该问你的密钥的密码,而不是远程机器。


为了使它更好用,你可以使用ssh-agent把解密的密钥保存在内存中 – 这意味着你不必每次都input密钥对的密码。 要启动代理,请运行(包括评估ssh-agent命令输出的back-tick引号)

 `ssh-agent` 

在一些发行版上,ssh-agent自动启动。 如果你运行echo $SSH_AUTH_SOCK并且显示一个path(可能在/ tmp /),那么它已经被设置了,所以你可以跳过前面的命令。

然后添加你的钥匙,你做的

 ssh-add ~/.ssh/id_rsa 

并input您的密码。 它被存储直到你删除它(使用ssh-add -D命令,它从代理中删除所有密钥)

对于Windows而言, 这是一个很好的介绍和指导

这里有一些非linux系统的ssh-agent。

  • Windows – pageant
  • OS X – SSHKeychain
  • sed初学者:改变文件夹中的所有事件
  • 如何粘贴到terminal?
  • 我怎样才能让`find`忽略.svn目录?
  • 如何在Linux中循环目录?
  • Linux中的itoa函数在哪里?
  • 创build.tar.gz文件时不包括目录
  • C非阻塞键盘输入
  • 安装mysqldb python界面时找不到mysql_config
  • linuxdynamic连接器的“无版本信息”错误是什么意思?
  • 如何使Maven构build平台独立?
  • 点文件中的“rc”是什么意思?