TypechoJoeTheme

MetMan's Blog

网站页面

SSH高级使用技巧

MetMan博 主神仙
2024-12-30
/
0 评论
/
143 阅读
/
752 个字
/
百度已收录
12/30
本文最后更新于 2024年12月30日,已超过 61天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

SSH客户端配置文件

如果在Linux平台使用SSH远程登录服务器,通过SSH客户端配置文件可以快捷方便登录服务器,减少命令输入。

SSH客户端配置文件语法介绍可以通过man ssh_config查看。

配置文件不区分大小写,#开头的行当做注释处理,可以使用如*的通配符设置参数。

常用参数:

  • Host 限制随后的配置应用于匹配的主机
  • User 登录用户
  • Hostname 登录服务器地址,常用IP地址
  • Port 登录端口号,默认不填为22
  • IdentityFile 指定本地认证私钥文件
  • ForwardAgent yes 允许ssh-agent转发
  • IdentitiesOnly 指定ssh是否仅使用密钥认证,yes/no
  • StrictHostKeyChecking 当设为ask时表示第一次连接陌生服务器时提示是否添加,同时如果远程服务器公钥改变时拒绝连接;yes表示不会自动添加服务器公钥到~/.ssh/known_hosts中,同时如果远程服务器公钥改变时拒绝连接;no表示自动增加新的主机键到~/.ssh/known_hosts中。

示例:

配置文件设置

# ~/.ssh/config
Host remote
  user test 
  hostname 10.10.10.10 
  port 22

连接命令:

$ ssh remote 
$ scp hello.txt remote:/path/to/dir

跳板机

跳板机:jump host, jump server, bastion server

可以使用ProxyCommand或者ProxyJump指令。

对于较新的OpenSSH,建议使用ProxyJump

使用示例:

$ ssh -J <jump_server> <remote_server>

通过多个跳板机命令

$ ssh -J <jump_server1>,<jump_server2>,<jump_server3> <remote_server>

如果使用ProxyCommand命令,

$ ssh -o ProxyCommand="ssh -W %h:%p <jump_server>" <remote_server>

以上是命令行使用方法,还可以在SSH客户端配置文件~/.ssh/config中进行跳转配置。

# ~/.ssh/config 
Host remote 
  HostName IP
  User test 
  IdentityFile ~/.ssh/<key>
  Port 2048 
  # ProxyJump 
  ProxyJump user@<jump_server>

  # if you want to use ProxyCommand  
  #ProxyCommand ssh -W %h:%p <jump_server>

完成跳转机配置后,直接使用以下命令登录远程机器

$ ssh remote

条件跳转

场景:笔记本电脑在家办公直接连接家庭网络访问家中的服务器,而在外面需要通过跳转机访问家中的服务器。

OpenSSH可以通过Match exec指令实现以上目的。

Match host server1 !exec "ifconfig en0 | grep 192.168.100.10"
    ProxyJump user@<jump server>

Host server1
    Hostname 192.168.100.20

检查网卡en0的IP地址是否是192.168.100.10,如果grep执行成功,SSH将执行跳板机配置,否则忽略跳转配置。

ProxyCommand配合netcat命令

ProxyCommand支持netcat(nc)命令,而netcat支持SOCKS v4/v5及HTTPS代理协议。

  • SOCKS v4
/usr/bin/nc -X 4 -x PROXY_ADDRESS:PORT %h %p
  • SOCKS v5
/usr/bin/nc -X 5 -x PROXY_ADDRESS:PORT %h %p
  • HTTPS
/usr/bin/nc -X connect -x PROXY_ADDRESS:PORT %h %p

配合ProxyCommand使用示例:

ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:1080 %h %p

以上命令实现SOCKS v5代理。

免密码密钥登录

对于Windows OpenSSH服务器,在%programdata%/ssh/administrators_authorized_keys(管理员账号)或者标准用户home目录下.ssh/authorized_keys文件中添加公钥。

然后使用管理员身份执行PowerShell,执行命令

icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

改变SSH默认端口

SSH默认端口为22,为了安全性建议改变该端口为其它端口,一般建议10000以上。

/etc/ssh/sshd_config中找到#Port 22这一行,开启端口设置

Port 10001

重启SSHD服务

$ systemctl restart sshd

如果此时测试新端口不能登陆,可能需要设置防火墙规则。

对于Centos,设置firewalld和SELinux。

  • firewalld
$ firewall-cmd --state  # 查看firewalld是否开启
$ firewall-cmd --zone=public --add-port=10001/tcp --permanent # 添加新端口规则
$ firewall-cmd --reload # 重启firewalld
$ firewall-cmd --zone=public --query-port=10001/tcp # 如返回yes说明添加成功
  • SELinux
$ /usr/sbin/sestatus -v # 查看SELinux是否开启
$ semanage port -l | grep ssh # 查看SELinux是否放行SSH端口
$ semanage port -a -t ssh_port_t -p tcp 10001 # 添加SSH端口 
$ semanage port -l | grep ssh # 查看是否添加成功

X11 Forwarding

很多时候需要在服务器上打开图像软件,需要开启X11 Forwarding功能。

首先OpenSSH服务器端配置文件/etc/ssh/sshd_config必须支持X11 Forwarding。

X11Forwarding yes

SSH客户端登录时加上-X选项。

$ ssh -X remote 
remote > xclock   # xlock 命令测试

参考资料

Tutorial: How to Use SSH ProxyJump and SSH ProxyCommand

SSH客户端配置文件config

OpenSSH Server configuration for Windows

CentOS7修改SSH端口,需设置防火墙Firewalld和SELinux放行新端口

史上最全 SSH 暗黑技巧详解

ssh
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/174/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

  1. tqymnonccc打酱油
    2024-09-27
  2. toibdpojay打酱油
    2024-09-22
  3. yvctxyevvw打酱油
    2024-09-22
  4. frezhwzwuq打酱油
    2024-09-22
登录
X
用户名
密码