ssh免密码登陆远程服务器
ssh免密码登陆远程服务器
在使用windows下的cygwin或者在linux下使用Terminal进行远程服务器登陆测试的时候总是会要求输入账号密码,对于此我们可以使用ssh将公钥放在服务器上的方式来实现免密码登陆。
1.创建公钥
#在Terminal输入
ssh-keygen -t rsa
一路回车按确定
#home/XXX/.ssh/该目录下产生了两个文件
id_rsa id_rsa.pub
id_rsa.pub就是你的公钥,现在将公钥改名为authorized_keys上传至服务器上的.ssh目录下就好了
#方法1
scp ~/.ssh/id_rsa.pub username@hostname:~/.ssh/authorized_keys
#方法2
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
然后就可以使用ssh username@hostname 登陆了。
2.修改默认登陆用户名以及多个ssh配置
但是还是要输入,所以更简单的方式就是修改你本地的配置文件~/.ssh/config 如果没有的话你就自己创建一个吧,这个配置文件主要是设置默认登陆账户的比如:
#统一格式
Host 别名
HostName 主机名
Port 端口
User 用户名
IdentityFile 密钥文件路径
举个例子:config文件:
Host localhost
HostName 127.0.0.1
Port 22
User user
IdentityFile ~/.ssh/id_rsa.pub
#注意多个ssh账号需要隔行分开
Host Alice
HostName hostname
Port port
User user
Host Bob
HostName hostname
Port port
User user
3.权限安全问题
还有个很重要的问题就是权限问题,一般情况下本地ssh文件权限设置为700,而远程服务器上的authorized_keys最好设置成600,这是为了安全考虑。
#修改权限命令路径根据自己的修改一般前面要加sudo 或者使用root账户修改哈
chmod 700 ~/.ssh/
chmod 600 authorized_keys