ssh免密登录
在腾讯云上买了个云服务器,开始的时候用的ssh user@ip 进行登录,但是每次都需要输入登录密码,于是在网上查找怎么免密登录,避免以后走弯路。
改环境是mac下免密登录ubuntu,且mac下已经有多个ssh配置。
生成公钥和秘钥
1 | cd ~/.ssh |
因为已经有多个ssh配置,所以生成一个server的配置,这样在~/.ssh目录下生成server的密钥和server.pub公钥
打开~/.ssh文件夹下config文件,没有就创建一个,加上下面这句
1 | Host server |
hostName为你要登录的服务器IP,user为你要登录的user名称。
再执行如下命令
1 | ssh-add ~/.ssh/server |
上面这句话是把专有密钥添加到ssh-agent高速缓存中。
上传公钥到服务器
1 | scp ~/.ssh/server.pub user@ip:~/.ssh/ |
将本机生成的公钥上传到你要登录的服务器上,因为mac上没有ssh-copy-id,故使用scp,而且网上下了ssh-copy-id也对mac不好使。
服务器操作
1 | cd ~/.ssh |
将上传的公钥添加到authorized_keys文件的末尾,没有该文件则自己建立一个新的文件。
1 | vi /etc/ssh/sshd_config |
修改该文件,打开authorized_keys,找到类似该条~#AuthorizedKeysFile.ssh/authorized_keys~删除注释,有可能该文件是readonly,我是这么解决退出编辑模式时输入
1 | :w !sudo tee % |
重启ssh:
1 | service sshd restart |
总结
一开始笔者一直不成功,有如下原因
- 因为已经配置多个ssh,需要自己往config文件添加ssh信息,并且ssh-add
- 权限不对authorized_keys为600,ssh文件夹为700
- 没有开启authorized_keys
- 没有重启ssh