linux中级_ssh服务

TJCcc 发布于 2025-11-30 15 次阅读


SSH服务详细学习笔记

一、SSH远程连接

1. Windows连接Linux服务器

基本语法:

ssh root@10.0.0.41    # 默认使用22端口
ssh root@10.0.0.41 2222    # 指定端口远程连接

说明:

  • 连接过程中都需要程序提供密码
  • 默认使用22端口
  • 可以通过在IP后直接加端口号来指定连接端口

2. Linux服务器连接Linux服务器

基本语法:

[root@nfs ~]# ssh root@10.0.0.41    # 默认22端口
[root@nfs ~]# ssh -p2222 root@10.0.0.41 # 指定远程端口

特点:

  • 默认使用22端口
  • 默认使用当前登录系统的用户远程连接
  • 服务器地址可以用IP、域名、主机名称

主机名称配置示例:

[root@nfs ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.41 backup

[root@nfs ~]# ssh -p2222 backup    # 使用主机名连接
[root@nfs ~]# ssh linuxnc.com      # 使用域名连接

二、SCP命令(远程拷贝)

基本说明:

  • 默认使用的22端口
  • 默认使用当前登录的用户

案例演示:

案例1:将本地文件传送到远程服务器

[root@backup ~]# touch test.txt
[root@backup ~]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 11 09:54 test.txt
[root@backup ~]# scp test.txt 10.0.0.31:/

案例2:从远程服务器拉取文件到当前目录

[root@backup ~]# scp 172.16.1.31:/etc/hosts .

案例3:指定端口推送文件

[root@nfs ~]# scp -P2222 test.txt 10.0.0.41:/opt/

案例4:拷贝整个目录

[root@backup ~]# scp -r /etc 10.0.0.31:/root/

三、SSH免密钥匙连接

SSH远程连接两种方式:

  • 方法1:基于用户和密码 → 类比:刷卡输入密码
  • 方法2:基于密钥的方式验证 → 类比:人脸验证

配置步骤:

第一步:生成密钥对(一把锁和一把钥匙)

[root@backup ~]# ssh-keygen    # 一路回车
[root@backup ~]# ll .ssh/
total 12
-rw------- 1 root root 1679 Apr 11 10:22 id_rsa      # 私钥
-rw-r--r-- 1 root root 393 Apr 11 10:22 id_rsa.pub   # 公钥

第二步:将公钥发送到需要免密连接的服务器

[root@backup ~]# ssh-copy-id -i .ssh/id_rsa.pub 172.16.1.31
# 或者简写,默认查找/root/.ssh/id_rsa.pub
[root@backup ~]# ssh-copy-id 172.16.1.31

第三步:远程连接测试

[root@backup ~]# ssh 10.0.0.31
Last login: Thu Apr 11 10:25:51 2024 from 10.0.0.41
[root@nfs ~]#

四、远程执行命令

案例1:在41服务器上远程在7服务器上创建test.txt文件

[root@backup ~]# ssh 10.0.0.7 'touch test.txt'

案例2:查看10.0.0.7的主机名称

[root@backup ~]# ssh 10.0.0.7 "hostname"
root@10.0.0.7's password:
web01

挂载相关问题:

# 挂载后如果不正常卸载,会有挂载的缓存
[root@backup ~]# cat /proc/mounts

# 重新使用命令卸载:
umount -f /mnt

五、SSH实现远程免密连接通过跳板机

网络拓扑:

跳板机:10.0.0.31 / 172.16.1.31
    ↓
免密机:172.16.1.7 (echo关闭)
    ↓
免密机:172.16.1.41 (echo关闭)

配置步骤:

案例:在nfs服务器免密远程连接10.0.0.7

第一步:nfs服务器生成密钥对

[root@nfs ~]# ssh-keygen

第二步:传送公钥的两种方式

第一种方法:使用ssh-copy-id的方式远程发送

[root@nfs ~]# ssh-copy-id -i .ssh/id_rsa.pub 10.0.0.7

默认会在10.0.0.7服务器目录下隐藏目录.ssh下生成:

-rw------- 1 root root 390 Apr 11 11:43 authorized_keys

第二种方法:手动复制公钥(只对xshell连接linux的时候才使用)

[root@web01 ~]# vim .ssh/authorized_keys
# 将公钥内容粘贴进去

# 在修改文件的权限为600
[root@web01 ~]# chmod 600 .ssh/authorized_keys

第三步:测试免密连接

ssh 10.0.0.7

六、权限问题排查

企业做免密连接出现问题最多的:
一切都没问题后还是无法免密连接;需要检查每层目录的权限一直到/目录

正确权限配置:

[root@web01 ~]# cd .ssh/
[root@web01 .ssh]# ll
total 8
-rw------- 1 root root 390 Apr 11 11:46 authorized_keys
-rw-r--r-- 1 root root 344 Apr 10 08:39 known_hosts

[root@web01 .ssh]# pwd
/root/.ssh

必须的权限设置:

  • .ssh目录必须是700权限
  • root目录权限必须是550
  • /根目录权限必须是555

权限修改示例:

# 检查root目录权限
[root@web01 ~]# ll -d /root
drwxr-xr-x. 5 1001 1001 180 Apr 11 11:46 /root

# 修改root目录权限
[root@web01 ~]# chmod 550 /root
[root@web01 ~]# ll -d /root
dr-xr-x--. 5 1001 1001 180 Apr 11 11:46 /root

# 修改root目录所有者
[root@web01 ~]# chown root.root /root
[root@web01 ~]# ll -d /root
dr-xr-x--. 5 root root 180 Apr 11 11:46 /root

⚠️ 重要提醒: 切忌一定不要使用-R递归修改root的权限!

七、知识点小结

  1. SSH远程连接
  • Windows连接linux
  • linux连接linux
  • 语法:ssh root@10.0.0.41 -p 22
  1. SCP命令 - 远程拷贝
  2. SSH远程执行命令 - 可以实现一键部署业务
  3. SSH免密连接
  • 生成密钥对
  • 远程拷贝公钥
  • SSH远程免密连接测试
  1. 权限控制 - 确保目录和文件权限正确
  2. 跳板机配置 - 通过中转服务器实现多层免密连接