Appearance
Linux OpenSSH 配置
1. 检查和启动 OpenSSH 服务
Warning:本小节内容目前仅适用于 RHEL 系 Linux。
1.1. 检查是否有安装 OpenSSH
Bash
$ yum -q list openssh-server如出现类似以下提示,则表示已安装:
Bash
$ yum -q list openssh-server
Installed Packages
openssh-server.x86_64 7.4p1-22.el7_9 @updates1
2
3
2
3
否则可以使用以下命令进行安装:
Bash
$ yum -y install openssh-server1.2. 检查是否启动了 OpenSSH 服务
Bash
$ systemctl status sshd如出现类似以下提示,则表示服务已启动:
Bash
$ systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-03-16 08:34:55 UTC; 16h ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 9617 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Main PID: 1149 (sshd)
CGroup: /system.slice/sshd.service
└─1149 /usr/sbin/sshd -D
Mar 17 00:43:31 username sshd[7474]: Failed password for invalid user mgmt from 114.96.95.21 port 50652 ssh2
Mar 17 00:43:31 username sshd[7470]: Failed password for root from 114.96.95.21 port 50642 ssh2
Mar 17 00:43:31 username sshd[7471]: Failed password for invalid user ubnt from 114.96.95.21 port 50646 ssh2
Mar 17 00:43:31 username sshd[7472]: Failed password for invalid user user from 114.96.95.21 port 50638 ssh2
Mar 17 00:43:31 username sshd[7473]: Failed password for invalid user dspace from 114.96.95.21 port 50650 ssh2
Mar 17 01:07:25 username sshd[7508]: reverse mapping checking getaddrinfo for 215.131.30.117.broad.xm.fj.dynamic.1...TEMPT!
Mar 17 01:09:07 username sshd[7508]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ru...r=root
Mar 17 01:09:07 username sshd[7508]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Mar 17 01:09:09 username sshd[7508]: Failed password for root from 117.30.131.215 port 55684 ssh2
Mar 17 01:09:15 username sshd[7508]: Accepted password for root from 117.30.131.215 port 55684 ssh2
Hint: Some lines were ellipsized, use -l to show in full.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
否则可以使用以下命令进行启动:
Bash
$ systemctl enable sshd1.3. 检查防火墙是否阻止了 OpenSSH 服务
如果以上两个步骤均检查、操作后没有问题,但是仍然连接不上则可以检查下是否是防火墙阻止了 OpenSSH 服务:
Bash
$ firewall-cmd --list-service如出现类似以下提示,则没有问题:
Bash
$ firewall-cmd --list-service
dhcpv6-client ssh1
2
2
否则可以使用以下命令添加 OpenSSH 服务:
Bash
$ firewall-cmd -add-service ssh permanent如不想永久添加该服务的话可以去掉该命令末尾的
permanent关键字即可。
1.4. 检查防火墙是否阻止了 OpenSSH 端口
首先可以确认下目前的 OpenSSH 的端口号是哪个,确认方法可以参考:修改 OpenSSH 默认端口小节当中的内容;
再检查检查防火墙是否开放了 OpenSSH 端口,具体方法可以参考:Linux 防火墙;
2. 修改 OpenSSH 默认端口
Tip:本小节内容均适用于 Debian 和 RHEL 系 Linux。
打开
sshd_config文件:Bash$ vim /etc/ssh/sshd_configINI... # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: ...1
2
3
4
5
6
7
8
9
10默认监听端口是 22,如果不强制说明别的端口,则以上第 6 行(
#Port 22)注不注释都是开放 22 端口。在第 6 行(
#Port 22)下边新增一行#Port 你想要开放的端口号(注意不要和现有端口号重复了),如果想同时开放多个端口则继续添加多行Port 其它端口号即可。重启 OpenSSH 服务:
Bash$ systemctl restart sshd也可以一起重启下服务器:
Bash$ shutdown -r now
3. 配置 OpenSSH 免密钥登录
基本原理:在本地生成一对公钥和私钥,将公钥字符串追加复制到服务器的 ~/.ssh/authorized_keys 文件中(其中:.ssh 文件夹权限设置为 700,authorized_keys 文件权限设置为 600,这个文件中可以放多个公钥字符串,一个公钥一行)。私钥(默认文件名为 id_rsa)放在本地 ~/.ssh/ 目录中,就可以实现默认私钥免密登录远程服务器。通过进一步配置 ~/.ssh/config 文件可以实现登录不同服务器用不同私钥文件的需求。
3.1. OpenSSH 客户端配置
这里以 Windows 操作系统为例:
生成 SSH 公钥、私钥
在终端运行命令:
ssh-keygen,连续回车,会在%HOMEPATH%/.ssh文件夹下生成公私钥文件(默认为id_rsa、id_rsa.pub,其中id_rsa为私钥文件、id_rsa.pub为公钥文件)拷贝公钥文件到服务器
~/.ssh/目录下Bash$ scp .\id_rsa.pub username@remote-ip:/home/username/.ssh/需要提前在 Linux 服务器的用户目录下创建
.ssh文件夹(如果没有的话)
3.2. OpenSSH 服务端配置
Tip:本小节内容均适用于 Debian 和 RHEL 系 Linux。
这里以 Linux 操作系统为例:
切换到
~/.ssh/目录:Bash$ cd ~/.ssh/创建公钥 keys 文件:
Bash$ touch authorized_keys将公钥字符串追加拷贝到该文件:
Bash$ cat id_rsa.pub >> authorized_keys修改文件权限:
Bash$ chmod 600 authorized_keys修改
.ssh文件夹权限:Bash$ cd .. $ ll -a | grep .ssh drwxrwxr-x. 2 fackadmin fackadmin 47 Nov 16 21:06 .ssh $ chmod 700 .ssh $1
2
3
4
5确认下
/etc/ssh/sshd_config文件中,PubkeyAuthentication未被配置为no;
这样就可以实现免密登录了:ssh root@remoteip
3.3. 不同服务器使用不同 SSH 私钥
在 Window 上编辑 %HOMEPATH%/.ssh/config 文件(如果不存在则新建一个),添加以下内容
INI
Host xmmtlinux
HostName 10.10.0.198
User fackadmin
Port 22
IdentityFile ~/.ssh/id_rsa1
2
3
4
5
2
3
4
5
保存之后,可以简化登录:ssh xmmtlinux