开发过程中经常需要通过SSH
协议登录到服务器做一些部署测试环境、查看日志等操作,需要记住很多服务器的账号和密码。密码设置的太简单了,不安全;密码设置的太复杂了,记不住。我也曾经通过印象笔记等软件维护过服务器的账号和密码,查看密码还是很麻烦,有没有什么简单的方法呢?
相信大家都使用过Git
以及Github
,不知道你是否还记得,你曾经在本地使用ssh-keygen
生成一对秘钥,然后将公钥(~/.ssh/id_rsa.pub
)添加到Github
网站上,在这个操作之前,每次提交代码都需要输入密码,烦不胜烦。
看到这里,你是不是也在想,同样是SSH
协议,登录服务器应该也可以做到免密。答案是肯定的。以下我将介绍如何实现通过SSH
协议免密登录服务器。
检查秘钥是否存在,如果存在请直接进入第 3 步,如果不存在请进入第 2 步。
如果你以前在当前电脑上开发过项目,提交过代码,一般都已经成了秘钥。你也可以通过ls ~/.ssh
命令可以检查秘钥是否已经生成,比如在我的电脑上执行该命令打印出id_rsa id_rsa.pub known_hosts
,而id_rsa
和id_rsa.pub
正是一对私钥公钥。生成秘钥
通过ssh-keygen
可以生成一对秘钥。这是一个交互式命令,需要你回答几个问题,不过不要担心,一般你只需要一路回车即可。将公钥添加到远程主机中
ssh-copy-id
命令可以把本地主机的公钥复制到远程主机的authorized_keys
文件中,它还会给远程主机的用户主目录和~/.ssh
, 和~/.ssh/authorized_keys
设置合适的权限。1
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
大功告成,现在你再通过ssh user@server
登录服务器时就不需要输入密码了,是不是很方便呢?