RHCE第三章:ssh(远程登录)

一、ssh的基础配置信息

[root@RH ~]#dnf provides /bin/ssh #查询安装ssh服务后的包名

[root@RH ~]# rpm -ql openssh #查看ssh服务产生那些文件

[root@RH ~]# ls /etc/ssh/ #查看ssh下的文件

        ssh是客户端

        sshd是服务端

        config是配置文件

        config.d是子配置文件

        key结尾的是私钥

        key.pub结尾的是公钥

~/.ssh/ #每个用户的家目录,'.'代表隐藏。该目录下的是当前用户的配置文件

        konw_hosts:记录远程服务器的密钥信息

        konw_hosts.old:konw_hosts的备份

ssh-keygen命令

        生成非对称密钥(-t)

        清理历史密钥信息(-R)

[root@RH ~]# vim /etc/ssh/sshd_config #查看或编辑sshd(服务端)的配置文件

         21 #Port 22 #(默认)端口号。1024以下都是知名端口号
         22 #AddressFamily any #地址家族。any表示既可以使用ipv4,也可以使用ipv6
         23 #ListenAddress 0.0.0.0 #任何ipv4地址都可以监听
         24 #ListenAddress :: #任何ipv6地址都可以监听

         26 #HostKey /etc/ssh/ssh_host_rsa_key #rsa加密算法的私钥
         27 #HostKey /etc/ssh/ssh_host_ecdsa_key #ecdsa加密算法的私钥
         28 #HostKey /etc/ssh/ssh_host_ed25519_key #ed25519加密算法的私钥

         39 #LoginGraceTime 2m
         40 #PermitRootLogin prohibit-password #是否允许root账户登录

                #PermitRootLogin:允许root账户登录。prohibit-password :禁止密码登录

                yes:允许密码及密钥登录。no:不允许密码及密钥登录。
         41 #StrictModes yes
         42 #MaxAuthTries 6
         43 #MaxSessions 10

         65 # To disable tunneled clear text passwords, change to no here!
         66 #PasswordAuthentication yes #是否允许密码登录
         67 #PermitEmptyPasswords no #是否允许空密码登录

二、实验1:禁止/允许密码登录服务器

(1)

[root@timeserver ~]# vim /etc/ssh/sshd_config #在服务器上修改命令

         40 PermitRootLogin prohibit-password #取消该行的注释,即不允许密码登录

[root@timeserver ~]# systemctl restart sshd #重启ssh服务(每一次修改命令都要重启一次服务)

[root@timeclient ~]# ssh root@192.168.153.100 #登录服务端

[root@timeserver ~]# #此时输入密码能登录的原因是因为sshd_config.d中的命令允许所有方式登录(子配置的优先级高)

(2)

[root@timeserver ~]# cd /etc/ssh/sshd_config.d #进入服务器的子配置文件夹(config.d是子配置文件)

[root@timeserver sshd_config.d]# ls #查看文件夹
01-permitrootlogin.conf(root用户的配置文件)  50-redhat.conf(redhat的配置文件)

[root@timeserver sshd_config.d]# vim 01-permitrootlogin.conf #修改root子配置文件

          3 #PermitRootLogin yes #允许root账户登录,允许所有方式登录(子配置优先级比配置优先级高)。对这行进行注释,即关闭子配置文件的管控(有注释则已主配置命令为主;无注释则无视主配置的命令,已子配置命令为主)

[root@timeserver ~]# systemctl restart sshd #重启ssh服务

[root@timeclient ~]# ssh root@192.168.153.100 #登录服务端

root@192.168.153.100's password:
Permission denied, please try again. #此时服务器已禁止密码登录
(3)

[root@timeserver ~]# vim /etc/ssh/sshd_config

        40 PermitRootLogin yes #允许密钥或密码登录

[root@timeserver ~]# systemctl restart sshd #重启ssh服务

[root@timeclient ~]# ssh root@192.168.153.100 #登录服务端

[root@timeserver ~]# #此时已登陆服务器(子配置的管控已关闭,主配置中的命令允许密钥或密码登录)

三、实验2:添加ssh的白名单和黑名单

(1)

[root@timeserver ~]# vim /etc/ssh/sshd_config #编辑ssh服务端的配置文件

        DenyUsers xing #在配置文件中添加DenyUsers(黑名单) 被拒绝的用户(如:xing;可加多个用户,用空格隔开)。只有被拒绝的用户不能访问,其他用户正常可以正常访问。

[root@timeserver ~]# systemctl restart sshd #重启ssh服务

[root@timeclient ~]# ssh xing@192.168.153.100
xing@192.168.153.100's password:
Permission denied, please try again. #此时服务器已禁止xing用户登录
(2)

[root@timeserver ~]# vim /etc/ssh/sshd_config

        DenyUsers xing

        AllowUsers xing #在配置文件中添加AllowUsers(白名单)被允许的用户(如:xing)。只有被允许的用户才能访问,其他用户不能正常访问。ssh服务中黑名单的优先级比白名单的优先级高

[root@timeserver ~]# systemctl restart sshd #重启ssh服务

[root@timeclient ~]# ssh xing@192.168.153.100
xing@192.168.153.100's password:
Permission denied, please try again. #此时客户端依旧不能用xing用户登录到服务端,是因为ssh服务中的黑名单优先级高于白名单,所以禁止xing用户登录

(3)

[root@timeserver ~]# vim /etc/ssh/sshd_config

        # DenyUsers xing #注释掉黑名单

        AllowUsers xing

[root@timeserver ~]# systemctl restart sshd 

[root@timeclient ~]# ssh xing@192.168.153.100
[xing@timeserver ~]$ #此时已登录xing用户的服务端

[root@timeclient ~]# ssh root@192.168.153.100
root@192.168.153.100's password:
Permission denied, please try again. #此时不能登录root用户的原因是因为白名单中只允许xing用户登录
 

四、实验3:修改sshd服务的端口号

[root@timeserver ~]# vim /etc/ssh/sshd_config #查看或编辑sshd(服务端)的配置文件

         21 #Port 2222 #修改端口号为2222(1024以下都是知名端口号)
         22 #AddressFamily any #地址家族。any表示既可以使用ipv4,也可以使用ipv6
         23 #ListenAddress 0.0.0.0 #任何ipv4地址都可以监听
         24 #ListenAddress :: #任何ipv6地址都可以监听

[root@timeserver ~]# systemctl restart sshd
Job for sshd.service failed because the control process exited with error code.
See "systemctl status sshd.service" and "journalctl -xeu sshd.service" for details. #此时重启服务失败即修改端口号没有完全成功,因为外网一般会通过IP地址即默认端口号访问到服务器,所以修改端口号会有防火墙的保护机制(防火墙有网络防火墙和内核防火墙)

[root@timeserver ~]# systemctl status firewalld.service #查看防火墙(firewall)状态
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enab>
     Active: inactive (dead) #网络防火墙已关闭
       Docs: man:firewalld(1)

[root@timeserver ~]# systemctl stop firewalld.sever #临时(stop)关闭网络防火墙

[root@timeserver ~]# setenforce 0 #临时关闭内核防火墙

[root@timeserver ~]# systemctl restart sshd #再次重启ssh服务(命令没报错就是成功)
[root@timeclient ~]# ssh root@192.168.153.100 
ssh: connect to host 192.168.153.100 port 22: Connection refused #因为修改端口号为2222,所以没有登陆成功
[root@timeclient ~]# ssh -p 2222 root@192.168.153.100 #-p是指定端口号的命令
[root@timeserver ~]# #此时已登录成功root账户
 

五、实验4:密钥登录服务器

(1)

[root@timeclient ~]# ssh root@192.168.153.100 #第一次登录root用户服务器
[root@timeserver ~]#

[root@timeclient ~]# ssh root@192.168.153.100 #第二次登录root用户服务器
[root@timeserver ~]#

[root@timeclient ~]# watch -n 1 ls ~/.ssh/ #每一秒监听当前用户的家目录(包括隐藏文件)

        known_hosts #第一次登录root用户服务器时生成的密钥
        known_hosts.old #第二次登录root用户服务器时生成的密钥,即第一次密钥的备份

[root@timeserver ssh]# ls #查看服务器ssh目录下的文件
moduli        sshd_config         ssh_host_ecdsa_key.pub    ssh_host_rsa_key
ssh_config    sshd_config.d       ssh_host_ed25519_key      ssh_host_rsa_key.pub
ssh_config.d  ssh_host_ecdsa_key  ssh_host_ed25519_key.pub
[root@timeserver ssh]# rm -rf ssh_host_* #删除所有服务器的密钥
[root@timeserver ssh]# ls
moduli  ssh_config  ssh_config.d  sshd_config  sshd_config.d
[root@timeserver ssh]# systemctl restart sshd #重启ssh服务
[root@timeserver ssh]# ls #再次查看,重启后又会重新生成新密钥
moduli        sshd_config         ssh_host_ecdsa_key.pub    ssh_host_rsa_key
ssh_config    sshd_config.d       ssh_host_ed25519_key      ssh_host_rsa_key.pub
ssh_config.d  ssh_host_ecdsa_key  ssh_host_ed25519_key.pub

(2)

[root@timeclient ~]# ssh root@192.168.153.100 #再次登录服务器
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:Gz58RCvB7uJhl6wuPpPqvtrCQHnMo/hDjKkDbN8JPiA.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:3
Host key for 192.168.153.100 has changed and you have requested strict checking.
Host key verification failed.

#“ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!  ”本地对比前后know_hosts不同后发出警告(原登录服务器的密钥与服务器重新生成的密钥不同),即不允许登录

[root@timeclient ~]# ssh-keygen -R 192.168.153.100 #清除(-R)192.168.153.100(指定ip)登录的记录
# Host 192.168.153.100 found: line 1
# Host 192.168.153.100 found: line 2
# Host 192.168.153.100 found: line 3
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

[root@timeclient ~]# ssh root@192.168.153.100 #重新登录
[root@timeserver ~]# #此时已经登陆成功

(3)

[root@timeclient ~]# ssh-keygen -t rsa #生成(-t)rsa机密算法。除了rsa加密算法,还有ecdsa加密算法和ed25519加密算法。只写ssh-keygen命令时默认生成rsa加密算法(一直回车就行)

        Generating public/private rsa key pair.


        Enter file in which to save the key (/root/.ssh/id_rsa): 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:60yHjASfMIhENTk0495g2LS6ZdD+28DTMXapJ01QXvQ root@timeserver
        The key's randomart image is:
        +---[RSA 3072]----+
        |.ooB.    ..o     |
        |..*+=   o . .    |
        |.o.B=  . .   E   |
        |  * o= .. .      |
        | . = .++S+       |
        |  + o.ooBo       |
        | .   =.+=o.      |
        |      =+o.       |
        |     . .o        |
        +----[SHA256]-----+

[root@timeclient ~]# watch -n 1 ls ~/.ssh/

        id_rsa #rsa加密算法生成的私钥
        id_rsa.pub #rsa加密算法生成的公钥。将公钥发送给服务器后,登录服务器时就无需用密码了

[root@timeclient ~]# ssh-copy-id root@192.168.153.100 #将生成的公钥发送给服务器(指定ip)

[root@timeserver ssh]# watch -n 1 ls ~/.ssh/ #监控服务器的家目录
        authorized_keys #保存客户端发来的公钥

[root@timeserver ssh]# cat ~/.ssh/authorized_keys #查看客服端发来的公钥
        ssh-rsa         AAAAB3NzaC1yc2EAAAADAQABAAABgQDh1sBT418Yl4MgywE5tippCF459SERrSU21+Ij        W6m1UKenRf1pj4YD70N9pMQZkglgomNYS3bsjJDrqxa5XilOjMjXxFOUeBs0r5HTab9Ek8O        RwGHyvIEE2fR0aGyqVwK18n/7yXP2R40x0C+lC8JIw5+yIxEcP14E3FYZmuq6KlKqOL5oO        X68yPwOy6H02LKDJsmJ05z9mBsGS4GHqfL+N5Ptxzs/3rz67k7hs+W82Xxif+W1LMozZGD6        ch+cygPkbzWHvsErZCIclp0B4bC58oXNVTihQeyUOV+XoWIRFBR6qsTjZeUXg5X3TTGfk3        bXCzNUY+VCV+/pyjM00WLSYTmA31GNtEsdooX/ukvbCr354X44RnuITtebZWt31GDtr1Uko        ljVbYLiCie2FuAWw1j3/gjgOCEiOKdWBMKjo/qudv0ED1EM1UXWjfI8pG8Y7kplRxIzl/rxo8/7a        xX7bcYerbdwyd0hL/En9M4B6az6a0E3tE/dIKBOMF+SflE= root@timeclient

[root@timeclient ~]# cat ~/.ssh/id_rsa.pub #查看客户端生成的公钥
        ssh-rsa         AAAAB3NzaC1yc2EAAAADAQABAAABgQDh1sBT418Yl4MgywE5tippCF459SERrSU21+Ij        W6m1UKenRf1pj4YD70N9pMQZkglgomNYS3bsjJDrqxa5XilOjMjXxFOUeBs0r5HTab9Ek8O        RwGHyvIEE2fR0aGyqVwK18n/7yXP2R40x0C+lC8JIw5+yIxEcP14E3FYZmuq6KlKqOL5oO        X68yPwOy6H02LKDJsmJ05z9mBsGS4GHqfL+N5Ptxzs/3rz67k7hs+W82Xxif+W1LMozZGD6        ch+cygPkbzWHvsErZCIclp0B4bC58oXNVTihQeyUOV+XoWIRFBR6qsTjZeUXg5X3TTGfk3        bXCzNUY+VCV+/pyjM00WLSYTmA31GNtEsdooX/ukvbCr354X44RnuITtebZWt31GDtr1Uko        ljVbYLiCie2FuAWw1j3/gjgOCEiOKdWBMKjo/qudv0ED1EM1UXWjfI8pG8Y7kplRxIzl/rxo8/7a        xX7bcYerbdwyd0hL/En9M4B6az6a0E3tE/dIKBOMF+SflE= root@timeclient

[root@timeclient ~]# ssh root@192.168.153.100 #登录服务器的root用户
Activate the web console with: systemctl enable --now cockpit.socket

Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Sun Apr 13 01:04:29 2025 from 192.168.153.200
[root@timeserver ~]# #此时无需密码登录,直接通过密钥登录
 

(4)实验结果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值