22_linux笔记-ssh服务

本文介绍了Linux系统管理的一些关键操作,如通过跳板机安全登录、配置SSH简化登录、检查端口可达性、处理SSH主机信任问题以及修改主机名等。此外,还详细展示了如何使用scp、sftp、pssh和pscp命令进行文件传输和批量操作,并提到了网络诊断工具fping的使用。内容涵盖了网络配置、进程查看、远程执行命令和自动化运维工具的使用。

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


博客cPen_web

知识点1 跳板机

#注:跳板机给办公人员用的 跳板机/堡垒机 为了保护系统的安全
#注:使用ssh-agent 访问跳板机和想要访问的主机
#注:使用场景 阿里的业务 本来有10万台主机(在局域网里面,没有外网,外部不能访问),我在家里,十万台机器捞出一台,这1台主机可以访问外网(跳板机/堡垒机),这1台跳板机的配置尤其重要
开启ssh-agent,把自己主机的公钥添加到目标主机和堡垒机下 (目标主机的权限和堡垒机的权限)
#注:连到A上,从A跳到B上,B不一定有当前主机的公私钥
#跳板机 安全加固:
不能使用root直接登录,使用sudo赋予相应权限
不能使用默认端口登录
不能使用密码登录,都使用公钥登录
添加防火墙配置

总结:
#跳板机
#安全加固
1、不能使用密码登录
2、不能使用root登录
3、修改默认端口
4、添加防火墙配置
5、使用跳板机登录

示例1:查看路由 ip r

[root@cPen_python ~]# ip r			# 注:查看路由
default via 192.168.0.1 dev ens33 proto dhcp metric 100 
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.32 metric 100 
[root@cPen_python ~]# ip r delete default via 192.168.0.1	# 注:删除网关
[root@cPen_python ~]# ip r
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.32 metric 100 
[root@cPen_python ~]# ping www.baidu.com		# 注:删除后ping不通外网
connect: 网络不可达
[root@cPen_python ~]# ping 8.8.8.8
connect: 网络不可达
[root@cPen_python ~]# ip r add default via 192.168.0.1	# 注:还原

示例2:A机器登录到B机器(简化登录) vim .ssh/config

#以后会遇到很多机器,ip地址是记不住的

#A机器登录到B机器,操作前需要先把A机器公钥放到B机器上 进行授权
#不修改全全局配置,只修改个人配置:在用户家目录下创建.隐藏文件
#在客户端上配置(配到自己的主机上)
#注:意思是将机器root@192.168.0.31 -p 2233 取个别名叫B
#ForwardAgent yes
#StrictHostKeyChecking no		# 注:是否输入yes
#ServerAliveInterval 60			# 注:存活时间
#IdentityFile ~/.ssh/id_rsa		# 注:认证文件
#示例如下
[root@cPen_python ~]# vim .ssh/config
###############################################
ForwardAgent yes
StrictHostKeyChecking no
ServerAliveInterval 60
IdentityFile ~/.ssh/id_rsa
###############################################
Host B
    HostName 192.168.0.31
    User    cPen
    Port    2233
[root@cPen_python .ssh]# chmod 600 config		# 注:授予权限 不执行这条语句 可能会报错
[root@cPen_python .ssh]# ssh B
Last login: Mon Nov 23 15:05:16 2020 from 192.168.0.32	# 注:登录成功
[root@cPen_centos8 ~]# 
#注:即简化 # ssh 192.168.0.31 -l root -p 2233 操作 (比如登录到ftp服务器 ssh ftp)

示例3:查看端口是否可以访问(即服务是否可达) telnet 192.168.0.31 2233

#ping命令 是查看2台机器网络是否连通
#查看服务是否可达使用 telnet命令
#示例:查看端口是否可达(服务是否可达)
[root@cPen_python .ssh]# yum install telnet -y
[root@cPen_python .ssh]# telnet 192.168.0.31 2233
Trying 192.168.0.31...	
Connected to 192.168.0.31.		# 注:服务可达
Escape character is '^]'.
SSH-2.0-OpenSSH_8.0

示例4:提示主机不被信任 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

#注:提示WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
将~/.ssh/known_hosts 删掉

示例5:永久修改主机名 hostnamectl set-hostname “A”

#方法1
[root@cPen_python .ssh]# hostnamectl set-hostname "A"
#注:其实是修改 /etc/hostname
[root@A ~]# less /etc/hostname 
#方法2
#或者直接修改 /etc/hostname
#临时修改主机名
[root@B ~]# hostname cp

示例6:查看进程数 pstree -p

#注:看程序树状结构 pstree -p
[root@cPen_python .ssh]# pstree -p |grep sshd
           |-sshd(1065)-+-sshd(3782)---bash(3784)
           |            |-sshd(3980)---bash(3982)-+-grep(4318)
           |            |-sshd(4059)---bash(4061)
           |            `-sshd(4288)---bash(4290)
#注:前面是父程序,后面是父程序创造出来的子程序,子程序分配新的bash环境,bash环境在操作命令grep
#注:父进程创造出子进程,子进程有创造出一个子进程,子进程创造出一个新的bash环境
#-------------------------------------------------------------------------------------------
#注:连接到B机器后bash环境多了一个ssh子进程去处理B机器
[root@a ~]# ssh B
Last login: Mon Nov 23 15:52:16 2020 from 192.168.0.32
[root@a .ssh]# pstree -p |grep sshd
           |-sshd(1065)-+-sshd(3782)---bash(3784)
           |            |-sshd(3980)---bash(3982)-+-grep(4325)
           |            |-sshd(4059)---bash(4061)---ssh(4323)
           |            `-sshd(4288)---bash(4290)

示例7:修改客户端配置 ~/.ssh/config

#配置文件:~/.ssh/config
#工作中使用跳板机代理登录 (客户端的配置,方便开发配置)

#注:假设现在有A、B、C三台机器,B是跳板机,假设A C不通,A通B,B通C,B通D,B通E…………
#注:B机器当做跳板机,A是自己的本地机,A机器做代理,B机器自动做转发
#注:在本地机A机器中操作
[root@a ~]# vim ~/.ssh/config 
###############################################
ForwardAgent yes
StrictHostKeyChecking no
ServerAliveInterval 60
IdentityFile ~/.ssh/id_rsa
###############################################
Host B
    HostName 192.168.0.31
    User    sanchuang
    Port    2233

Host 192.168.0.54
    User  sanchuang
    Port 2233
    ProxyCommand  ssh 192.168.0.31 -W %h:%p -l sanchuang -p 2233
#注:ProxyCommand表示 A通过跳板机(192.168.0.31)B登录到
#-------------------------------------------------------------------------------------------
Host *	/ftp*	/10.* 以10网段开头的ip地址 ssh 10.0.0.1 跳到这个配置执行
    User    sanchuang
    Port    2233
    ProxyCommand  ssh B nc %h %p -w 10 2>/dev/null
#注:上课时冲突 前面写Host *与ssh B冲突

示例8:远程执行命令 ssh B

#不登录B机器,执行B机器上的命令 (一般用于脚本)
[root@a ~]# ssh B ifconfig	# 注:登录到B执行 ifconfig命令
[root@a ~]# ssh B ip a		# 注:登录到B执行 查看ip地址 命令 ;命令的返回是B机器给的
[root@a ~]# ssh B "/usr/sbin/ip a"	# 注:脚本里建议使用命令的绝对路径

示例9:远程传输 scp (前提ssh可以连接)

#注:传输文件
[root@a ~]# touch ahost
[root@a ~]# scp ahost B:/tmp	# 注:将A机器 当前路径ahost文件cp到B机器下的/tmp路径下
ahost                                                                                                     100%    0     0.0KB/s   00:00  
[root@a ~]# scp B:/tmp/bhost ./	# 注:将B机器 /tmp/bhost文件cp到当前路径
bhost                                                                                                     100%    0     0.0KB/s   00:00  
[root@a ~]# scp B:tmp/testhost ./	# 注:将B机器 家目录下 tmp/testhost文件cp到当前路径
#注:传输目录 
[root@a ~]# scp -r adir B:			# 注:将A机器当前路径下 adir文件夹 cp到B机器家目录下
[root@a ~]# scp -r adir B:bdir		# 注:复制文件夹并改名
[root@a ~]# scp -r adir B:bdir/		# 注:和上面的没有区别

示例10:sftp传输文件 (前提ssh可以连接)

#注:ftp文件传输
#注:sftp 传输文件 本地和异地传输文件
#注:格式 sftp 用户名@主机名
[sanchuang@a ~]$ sftp B
Connected to B.
sftp> ls							# 注:显示远程目录列表
2q        aa        adir      bb        bdir      testdir   testdir2  testhost  
sftp> get bdir
Fetching /home/sanchuang/bdir/ to bdir
Cannot download non-regular file: /home/sanchuang/bdir/
sftp> mget bdir
Fetching /home/sanchuang/bdir/ to bdir
Cannot download non-regular file: /home/sanchuang/bdir/
sftp> get 2q						# 注:get 远程路径	下载文件
Fetching /home/sanchuang/2q to 2q
/home/sanchuang/2q                                                                                       100%  226   107.5KB/s   00:00    
sftp> exit

示例11:pssh pscp命令 (前提ssh可以连接)

#批量处理
pssh
  -h  指定主机文件列表,内容格式”[user@]host[:Port]”
  -i  指定每个服务器的处理信息
[root@a ~]# yum install pssh -y		# 注:没有的话需要安装epel源
[root@a ~]# cat ip.txt 
192.168.0.31:2233
192.168.0.54:22
[root@a ~]# pssh -h ip.txt -i "/usr/sbin/ip a"
[1] 17:18:13 [FAILURE] 192.168.0.54:22 Exited with error code 255、
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
……											# 注:需要保证ssh能不能过去
[2] 17:18:13 [SUCCESS] 192.168.0.31:2233			# 注:返回SUCCESS表示执行成功
……
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
……
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 
……
#-------------------------------------------------------------------------------------------
#ip.txt里面可以这样写
[root@a ~]# vim ip.txt 
sanchuang@192.168.0.31:2233
sanchuang@192.168.0.54:2233

示例12:pscp.pssh 批量传输文件 (前提ssh可以连接)

[root@a ~]# pscp.pssh -h ip.txt pscptest /tmp
# 注:把当前目录下的pscptest文件传送到目标主机的/tmp目录下
[root@a ~]# vim ip.txt 
sanchuang@192.168.0.31:2233
sanchuang@192.168.0.54:2233
[root@a ~]# pscp.pssh -h ip.txt pscptest /tmp
[1] 17:41:31 [FAILURE] sanchuang@192.168.0.54:2233 Exited with error code 1
[2] 17:41:31 [SUCCESS] sanchuang@192.168.0.31:2233

示例13:fping

#注:批量ping 使用fping命令
[root@a ~]# yum install fping -y
[root@a ~]# fping -g 192.168.0.1/24		# 注:-g 根据网段去ping
192.168.0.1 is alive
……
192.168.0.254 is unreachable
[root@a ~]# fping -f ip.txt 			# 注:-f根据文件指定ip去ping
192.168.0.31 is alive
192.168.0.54 is alive
[root@a ~]# vim ip.txt 
192.168.0.31
192.168.0.54
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mycpen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值