配置远程服务器的ssh免密登录 + ssh别名设置(踩坑指南)#
一、 需求简介
经常连接 ssh 的同学都会有一个苦恼就是每次ssh连接远程主机的时候都要手动输入完整的 ssh username@servername -p sshport 命令,之后还要输入ssh的密码才能连的上我们的远程主机。这样的过程在需要频繁的连接远程主机的时候还是比较让人头疼的,所以今天我就简单介绍下如何通过一条指令方便快捷的ssh免密登录。主要就是为远程主机设置别名,然后设置免密登录。
二、SSH设置别名访问远程服务器
一般使用ssh访问远程服务器的命令是:ssh username@ip地址, 例如:ssh root@1.1.1.1,然后输入密码访问。ip地址不好记是一方面是,容易敲错是另外一方面,设置别名就可以解决这样的问题,设置别名之后,我就可以直接通过ssh [别名]
的方式来直接连ssh了。
进入~/.ssh
目录,查看是否有名为config
的文件,如果没有直接创建一个,然后修改config文件为远程主机起 别名
vim ~/.ssh/config
config 文件的编写可以参考下面
Host vps
HostName 1.1.1.1
User root
Port 22
这样我就为1.1.1.1主机的起了别名vps, 按照上面这种配置文件配置成功之后我运行ssh vps
命令就和运行ssh root@1.1.1.1 -p 22
命令是一样的效果了。
wq保存退出。
看下效果:
root@Conners:~/.ssh# ssh vps
root@1.1.1.1's password:
提示我们输密码登录了,说明别名配置成功了,接下来我们来设置免密登录。
三、ssh免密登录配置
首先明确下关系,假设我使用的主机为A, 需要远程ssh免密登录的主机为B。
在A主机上生成密钥对, 输入ssh-keygen -t rsa
然后一路默认就好了
root@Conners:~/.ssh# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:GdIYM9AQdOegRDxMFNaXzpsVxA3s2AiJpCqQ0n+aY5M root@Conners
The key's randomart image is:
+---[RSA 2048]----+
| O&O*..=qq |
| o +=o=Xo + . |
|+ o . o=+= . |
|o. . .=o+ |
|o . . S+ |
|. = o |
| E |
| . o |
| |
+----[SHA256]-----+
这时~/.ssh/
目录下应该多了几个文件
root@Conners:~/.ssh# ls
config id_rsa id_rsa.pub known_hosts
打开 id_rsa.pub
文件,从ssh-rsa开始完整的复制整个文件内容,备用
root@Conners:~/.ssh# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLI+y4irmSYFbQ5eb/2KYnh0PMSUoT04ED/fSxZvpTA7ou1g03IxUin6+m3fsznDnymELY1LoqLe+Di0prCwqEyH0/kHw+vhBIjWC0xA/EGHcR7FbMv2U2vSglALoOgZnPeSSXsCJiAe8hQ933KZ6MivHzQKjb5q3E+4JRSSZDnx6ASy0/SpUyTzwbB/DsAoDXFqc9FnUWHpOUndOu9Xez1ktg82UoeLts/1q6CFSi8W9wY6B9Ti96ECV8NdwFyAmqJx3indgQoPkUiech/iCWvyE8C8TVuWMsLhETmm+2Eq/pSnNxBnC/+N8pk8gKBHmcXC/zeL3DL/R1Omg5m1Cx root@Conners
先手动输入密码连接上主机B,将刚才的内容复制到 ~/.ssh/authorized_keys
文件的最后,如果没有这个文件,就创建一个之后再复制进去,保存退出。
在主机A上执行ssh-copy-id 主机B用户名和主机名
,如ssh-copy-id root@192.168.1.11
然后输入密码登录一遍,输完密码就会提示你可以试试免密登录了。
在主机A上尝试ssh连接主机B, 看是否已经可以成功免密登录了,如果是,那么恭喜你, 你可以关了我的这个博客页面,心情好的话可以给个赞再走QAQ;如果还没成功,老哥,继续看看四吧。
四、解决一些小问题!!
如果配置好ssh公钥还不能免密登录的的话,检查一下主机B的配置文件
vim /etc/ssh/sshd_config
看下这三行是不是被注释了,如果是,就取消注释,
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
再试下成功没,没成功继续往下看
root@Conners:~/.ssh# ssh vps
sign_and_send_pubkey: signing failed: agent refused operation
root@45.78.64.125's password:
如果报错sign_and_send_pubkey: signing failed: agent refused operation,在主机a继续执行下面的命令
eval "$(ssh-agent -s)"
ssh-add
最后再来试下
root@Conners:~/.ssh# ssh vps
[root@host ~]#
成功了!!完结撒花