Day 22 SSH远程管理服务

本文详细介绍了SSH服务的配置,包括服务器端和客户端的设置,以及如何通过密钥对实现免密登录。文章还探讨了两个企业案例,涉及SSH连接中的常见问题和解决方案,如密钥指纹不匹配和多台内网服务器间的连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sshd服务,系统自带,默认开机自启运行

云/物理服务器的安全组和防火墙默认放行该端口

软件包:openssh-server(服务端);openssh-client(客户端);

格式:ssh IP地址/域名 [参数]

[参数]:

-p 端口号:ssh指定端口登录,一般用于登录修改过端口号的服务器

-i 密钥文件路径:使用指定密钥文件登录

-X:打开对方服务器下带有图形化界面的应用,X11

ssh服务配置文件

服务端配置文件

/etc/ssh/sshd_config

配置文件部分参数解释:

Port 22    //指定允许登录端口22

PermitRootLogin yes    //允许root用户登录

SyslogFacility AUTHPRIV    //将sshd的相关日志储存在 AUTHPRIV 日志对象中

LoginGraceTime 2m    //客户端将有2分钟的时间来完成身份验证,超时将断开连接

MaxAuthTries 6    //每个客户端最多6次机会进行身份验证,超过3次(半数)验证失败将被系统日志记录,超过6次连接将被拒绝

MaxSessions 10    //允许单个客户端建立最多10个会话

AuthorizedKeysFile .ssh/authorized_keys    //指定ssh服务的公钥验证文件authorized_keys(锁)的的位置在每个用户的家目录下的 .ssh 目录中

可以将位置指向同一个目录方便管理例如:AuthorizedKeysFile /etc/ssh/authorized_keys/%u

%u为占位符,实际过程中会被替换为以当前用户名命名的文件夹

PubkeyAuthentication yes    //允许使用密钥验证登录

PasswordAuthentication yes    //允许使用密码验证登录

X11Forwarding yes    //允许X11(图形界面)转发

客户端配置文件

/etc/ssh/ssh_config

Port 22    //指定登陆端口

ForwardX11Trusted yes    //信任服务端通过ssh连接转发过来的X11(图形界面)连接

取消ssh客户端访问ssh服务器的时候输入yes/no,直接输入密码:

修改客户端配置文件/etc/ssh/ssh_config

#StrictHostKeyChecking ask 改为 StrictHostKeyChecking no

GSSAPIAuthentication yes 改为 GSSAPIAuthentication no

使用shell脚本,sed非交互式修改

sed -i 's/#StrictHostKeyChecking ask/StrictHostKeyChecking no/'   /etc/ssh/ssh_config

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/'    /etc/ssh/ssh_config

实例:修改ssh端口

①修改ssh服务端配置文件:vim /etc/ssh/sshd_config

②修改 Port 端口号,保存退出,重启服务,客户端无法登录

此时,客户端想要通过ssh登录服务端的方法:

①通过 [参数] -p来指定端口进行登录

②修改ssh客户端:vim /etc/ssh/ssh_config,将端口号修改为和服务端一致

ssh密钥登录

密钥文件目录(隐藏):/root/.ssh/

root为当前的登录用户,所以密钥目录在当前用户家目录 /root/ 下

生成ssh密钥文件:ssh -keygen

一直Enter,会在 /root/.ssh/ 目录下生成一对密钥文件:id_rsa.pub 和 id_rsa

非交互式生成ssh密钥文件:ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

公钥:id_rsa.pub

私钥:id_rsa

密钥原理

同一台服务器上的公钥文件 id_rsa.pub 和私钥文件 id_rsa 像是一对配套的锁和钥匙,公钥是锁,私钥是钥匙

但是只有把公钥文件的内容写入验证文件 authorized_keys 中时才能发挥锁的作用

把验证文件(锁)下在谁身上,就可以用对应的私钥文件(钥匙)开谁

实例:免密登录

使用A免密登录B

①A生成密钥:ssh-keygen,密钥文件在 /root/.ssh/ 目录下

A生成配套的A锁(id_rsa.pub)和A钥匙(id_rsa),但此时A锁还不能起作用

②A想免密登录B,则A将自己公钥文件 id_rsa.pub 内容写进B的验证文件 authorized_keys 中

ssh-copy-id 192.168.98.137    //B的IP,过程需要输入B的密码

此时 A锁(id_rsa.pub)在 B的验证文件(authorized_keys)中开始发挥作用,相当于给B下了一个A锁(authorized_keys)

③验证使用A免密登录B

实际上,是用 A钥匙(id_rsa)去开 A锁(authorized_keys )

实例:使用远程登录工具登录

①A生成密钥:ssh-keygen,密钥文件在 /root/.ssh/ 目录下

A生成配套的A锁(id_rsa.pub)和A钥匙(id_rsa),但此时A锁还不能起作用

②A将自己公钥文件 id_rsa.pub 内容写进A自己的验证文件 authorized_keys 中

cd /root/.ssh/

cat id_rsa.pub > authorized_keys

此时 A锁(id_rsa.pub)在 A的验证文件(authorized_keys)中开始发挥作用,相当于给A自己下了一个A锁(authorized_keys)

③将A的私钥文件 id_rsa 下载至本地,并远程工具使用该密钥登录A

实际上就是远程登录工具拿A钥匙(id_rsa)开A给自己下的A锁(authorized_keys)

实例:ssh指定密钥登录

A使用密钥登录B

①B生成密钥:ssh-keygen,密钥文件在 /root/.ssh/ 目录下

B生成配套的B锁(id_rsa.pub)和B钥匙(id_rsa),但此时B锁还不能起作用

②B将自己公钥文件 id_rsa.pub 内容写进B自己的验证文件 authorized_keys 中

cd /root/.ssh/

cat id_rsa.pub > authorized_keys

此时 B锁(id_rsa.pub)在 B的验证文件(authorized_keys)中开始发挥作用,相当于给B自己下了一个B锁(authorized_keys)

③A获取B的私钥文件id_rsa,并使用该密钥登录B

scp 192.168.98.137:/root/.ssh/id_rsa /root/  //192.168.98.137为B的IP

ssh 192.168.98.137 -i id_rsa

实际上是给A一把B钥匙(id_rsa)

A拿着B钥匙(id_rsa)去开B下在自己身上的B锁(authorized_keys)

同样的道理,使用C生成一对密钥对,把C的公钥文件内容放进B的验证文件中,然后把C的私钥文件拷贝给A,A是可以拿着C的私钥文件登录B的。

scp远程拷贝

把文件拷贝到其他服务器:scp 本地文件名 目标IP:目标存放路径

从其他服务器拷贝文件:scp 目标IP:目标文件名 本地存放路径

注意:

-r:远程拷贝目录

如果服务器之间做了免密登录,那么远程拷贝不需要密码

企业案例一

ssh远程连接服务器出现以下报错:

问题:指纹不匹配

解决方法:rm ~/.ssh/known_hosts //删除当前家目录已建立过连接主机的密钥

企业案例二

在阿里云北京4区可用区二有50台服务器,这50台服务器使用同一个私有网络(10.0.0.0/24),只有一台服务器有公网IP,剩下的49台怎么连接?

50台服务器的内网IP为:10.0.0.10 - 10.0.0.60

50台服务器采用内网可以互相访问

A:私网:10.0.0.10  公网:1.98.42.123

先用远程工具连A,A采用密钥去连接在同一个内网中能够使用内网互相访问的服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值