ssh免密码登陆远程服务器

时间:2021-12-08 15:51:32

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