SSH远程登录服务器(By-Ruicky)

1

#SSH远程登录服务器

最近搭建了一个远程 Linux 服务器,在使用过程中每次SSH登录都需要输入密码,很不方便。所以想配置一下 SSH Key 实现 SSH 免密登录。同时,还要保证配置的过程中不能覆盖当前配置好的 SSH Key,比如 Github使用到的SSH。

所以现在有两个问题需要解决:

问题1: 登录时不用输入密码进行验证。
问题2: 多 SSH Key 管理。保证本地电脑上为Github配置的 SSH Key不会被覆盖。
下面我们来解决这两个问题

1. 免密码登录

在本地电脑上生成 SSH公钥和私钥。下面的命令是生成 SSh 公钥和私钥到指定目录下。

其中的路径和邮箱地址请更换为你自己的。

1
$ ssh-keygen -t rsa -f /Users/user/.ssh/rsa_vps/id_rsa_remote -C "user@domain.com"

将公钥上传到服务器.ssh目录下

1
$ scp id_rsa_vps.pub root@123.456.789.123:~/.ssh/

最后在远程服务器上将公钥内容追加到 ~/.ssh/authorized_keys 文件中

1
cat id_rsa.pub >> authorized_keys

2. 多SSH管理

如果要管理多个 SSH,需要在用户主目录下的 .ssh文件夹下新建并配置config文件。

1
$ vim ~/.ssh/config

config文件里按照如下格式进行填写

1
2
3
4
5
6
7
Host github.com
IdentityFile ~/.ssh/id_rsa
User test

Host 123.456.789.123
IdentityFile ~/.ssh/id_rsa_romote/id_rsa_remote
User root

每个参数具体的含义如下

1
2
3
4
5
Host 别名
HostName 主机名
Port 端口
User 用户名
IdentityFile 密钥文件的路径

配置好了之后,我们快去测试一下吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 测试GitHub
$ ssh -T git@github.com
Hi test! You've successfully authenticated, but GitHub does not provide shell access.

# 测试远程服务器
$ ssh root@123.456.789.123
Welcome to Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

14 packages can be updated.
0 updates are security updates.


*** System restart required ***
root@Ubuntu:~#

ok,搞定收工。
补充如下:
如果服务器没有.ssh目录则需要自己手动创建

1
$ ssh-keygen -C "example@domain.com"

参考文档

SSH远程登录服务器
ssh非交互式密码授权(三):使用密钥进行认证

坚持原创技术分享,您的支持将鼓励我继续创作!