使用 SSH 登录服务器
Contents
常常和服务器打交道的同志,最频繁的操作就是登陆服务器。每次登陆服务器都要输入密码特别的烦人。 有没有一种办法可以只输入一次密码,以后有都不用再输入密码的办法?如果有多个服务器怎么办?又要输密码吗? 其实我们常常使用 SSH 登录服务器,这个 SSH 就提供了这样的操作,不过需要配置。
生成公私钥文件
要不想每次都输入密码才登录服务器,那就得让程序来做,但是这样又不安全,所以我们先要加密。比较安全的就是 SSH,配合 rsa 算法来实现免密登录。
先来生成加密的公私钥
ssh-keygen -t ras
在输完命令之后一路回车,会在 ~/.ssh 目录下生成 id_rsa 私钥和 id_rsa.pub 公钥。
把公钥拷贝到服务器
上一步我们生成了公私钥文件,接下来就要把公钥放到服务器
cd ~/.ssh
ssh-copy-id -i id_rsa.pub user@192.168.1.xxx # -i 表示把指定的文件拷贝到服务器
输入这条命令,还需要验证一次登录密码,也是唯一的一次,之后就可以不用再输入密码了。
如果修改了 ssh 的默认端口可以在使用 -p 来设置端口号
ssh-copy-id -i id_rsa.pub user@192.168.1.xxx -p port
配置多账号
通过上面的步骤,已经可以在登录服务器时不用在输入密码了。但是每次还要输入用户名和 ip ,也是挺麻烦的。有办法可以不需要每次都输吗?答案是可以的,接下来的内容就是解决这个问题的。
先在 ~/.ssh 目录下创建一个 config 的文件,并根据自己的情况加入如下内容
Host A # 别名
User usera # 登录用户名
Hostname 192.168.1.xxx # 服务器 ip
IdentityFile ~/.ssh/id_rsa # 私钥文件存放地址
Port 22 # 端口号,默认 22,没改可以不用写
Host B
User userb
Hostname 192.168.1.xxx
IdentityFile ~/.ssh/id_rsab
做完了上面的如果我们要登录服务器 A ,就只需要输入 ssh A 就可以登录到服务器了。其中 A 是服务器 A 的别名。