欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

秒懂!SSH免密登录和快速登录的实用小技巧

最编程 2024-08-03 14:27:13
...

ssh免密登录服务器,需要在本地生成公钥和私钥,并且将公钥上传到服务器中,保存在家目录的 .ssh/authorized_keys下。

本地生成ssh公钥私钥

在本地主机中生成ssh秘钥可以通过命令行运行如下命令生成:

ssh-keygen -t rsa

运行该命令后,需要输入的地方直接回车就可以了。成功后会在家目录下的.ssh目录中生成id_rsaid_rsa.pub两个文件,其中id_rsa是存放私钥的文件,而id_rsa.pub则为存放公钥的文件。

将本地ssh公钥上传到服务器

将本地文件上传到服务器的方法挺多的,比较方便的就是scp命令了,同时它也能够从服务器上拷贝文件到本地。其用法为:scp source desc,其中的source为源文件路径,即你想要上传的文件或者从服务器拷贝到本地文件的路径,而desc为目标路径,即文件的最终去向。(从哪来source,到哪去desc),对于其他参数可自行百度。如果源文件或者目标路径在远程主机上,需要注意路径格式。以远程主机为Linux主机为例。如果要从远程主机拷贝文件:

scp user@hostname:/home/userhome/a.txt ./
# user为远程主机的用户名,hostname为远程主机的名字,可以是域名,也可以是ip地址,后面的文件路径要用`:`分隔,目标路径 `./`意味着将文件拷贝到当前目录下

将文件上传到服务器大同小异,比如本地现在在.ssh路径下,要将当前路径的id_rsa.pub上传到服务器,操作如下:

scp ./id_rsa.pub  git@192.168.56.114:/home/git/

该命令将当前目录下的id_rsa.pub文件上传到服务器192.168.56.114的/home/git/目录下,用户名为git。 无论是上传还是拷贝远程文件,过程中都需要输入用户密码。

注意id_rsa为私钥文件,千万不能泄露,上传服务器的为公钥文件id_rsa.pub,况且,上传私钥也没用。

将公钥添加到.ssh/authorized_keys文件中

公钥上传到服务器之后,还不能通过免密登录,需要将公钥添加到.ssh/authorized_keys文件中:

$ ls 
id_rsa.pub
$ cat id_rsa.pub > .ssh/authorized_keys

$ cat .ssh/authorized_keys
ssh_rsa XXXXXXXXXXX youremail@xxx.com

现在免密登录的功能其实已经大功告成了,在本地主机上直接ssh user@ip就能登录服务器了。如果不能登录试着重启一下本地的ssh服务。

懒人秘笈

现在我们虽然可以免密登录远程主机,但是每次登陆都要输入用户名@主机ip这一串鬼东西,本着能偷懒就偷懒的原则,给这个主机映射一个简单的名字来进行登录吧。 在.ssh目录下有一个config文件,该文件可以为远程主机配置别名用于快速登录,如果没有该文件,就新建一个吧。

修改.ssh/config文件为:

Host mac
    HostName 192.168.56.114
    User git
    #port 22

其中Host字段后面的 mac为我们起的别名,HostName为主机的ip地址,User 字段则指定登录的用户名,由于我将authorized_keys文件放在了git用户的家目录的.ssh目录中,所以我的User字段为git

大功告成

现在你只需要在本地主机上通过 ssh mac就能登录远程主机了。