1. 首页 > 头条 > 百货快讯

2024年最全SSH攻防一体命令备忘清单

1.关于SSH

SSH(缩写为“Secure Shell”或“Secure Socket Shell”)是一种网络协议,用于通过不安全的网络安全地访问网络服务。它包括实现SSH的一套实用工具,例如:

默认情况下, SSH服务器在标准传输控制协议(TCP) 端口22上监听连接。但也可以自定义其他端口, 但要注意避免端口冲突的问题。

SSH可以安全地管理远程系统和应用程序,例如通过网络登录到另一台计算机、执行命令以及将文件从一台计算机移动到另一台计算机。高级SSH功能是创建安全隧道以远程运行其他应用程序协议。

2.基本SSH命令

以下是整理的SSH命令清单:

命令

功能描述

连接到远程服务器

ssh pi@raspberry

raspberry以用户身份pi通过默认 SSH 端口 22连接到设备

ssh pi@raspberry -p 3344

raspberry以用户身份pi通过3344端口连接到设备

ssh -i /path/file.pem admin@192.168.1.1

以root用户身份通过密钥文件/path/file.pemadmin连接192.168.1.1

ssh root@192.168.2.2 'ls -l'

以root用户身份连接192.168.2.2并执行远程命令ls -l

$ ssh user@192.168.3.3 bash < script.sh

调用当前工作目录中的脚本script.sh,以user用户身份连接192.168.3.3

ssh friend@Best.local "tar cvzf - ~/ffmpeg" > output.tgz

以friend用户身份登录远程主机Best.local, 并在远程主机上对 ~/ffmpeg 目录进行压缩,并将压缩后的结果传输到本地主机上的 output.tgz 文件

ssh-keygen

生成SSH密钥

ssh-keygen -F [ip/hostname]

从~/.ssh/known_hosts文件(已登录的主机)中搜索某个IP地址或主机名

ssh-keygen -R [ip/hostname]

从~/.ssh/known_hosts文件(已登录的主机)中删除某个IP地址或主机名

ssh-keygen -f ~/.ssh/filename

指定文件名

ssh-keygen -y -f private.key > public.pub

从私钥生成公钥

ssh-keygen -c -f ~/.ssh/id_rsa

更改密钥文件~/.ssh/id_rsa`的注释

ssh-keygen -p -f ~/.ssh/id_rsa

更改私钥~/.ssh/id_rsa`的密码

ssh-keygen -t rsa -b 4096 -C "my@email.com"

生成一个带有注释 "my@email.com" 的RSA 4096位密钥:-t:密钥类型 ( rsa, ed25519, dsa, ecdsa) -b:密钥中的位数 -C:提供新注释

在服务器之间安全地复制文件

scp user@server:/folder/file.ext dest/

从远程复制到本地目的地dest/

scp dest/file.ext user@server:/folder

从本地复制到远程

scp user1@server1:/file.ext user2@server2:/folder

在两个不同服务器之间复制

scp user@server:/folder/* .

从服务器文件夹复制到本地计算机上的当前文件夹

递归复制整个目录

scp -r user@server:/folder dest/

将整个文件夹复制到本地目的地dest/

scp user@server:/folder/* dest/

将文件夹中的所有文件复制到本地目标dest/

压缩数据的选项

打印详细信息的选项

保留传输文件的最后修改时间戳的选项

连接到远程主机端口 8080 的选项

批处理模式选项并阻止输入密码串

在服务器之间安全地传输文件

保留传输文件的最后修改时间戳的选项

sftp -P 8080

连接到远程主机端口8080

上传和下载时递归复制整个目录。SFTP不跟踪树遍历中遇到的符号链接。

3.SSH配置和选项

以下命令记录了SSH如何在不同机器上记录登录凭据:

命令

功能描述

man ssh_config

打开OpenSSH SSH 客户端配置文件。本手册列出了可以更改的所有OpenSSH参数。

cat /etc/ssh/ssh_config | less

查看OpenSSH 客户端系统范围的配置文件

cat /etc/ssh/sshd_config | less

查看OpenSSH服务器系统范围的配置文件;“d”代表服务器“守护进程”

cat ~/.ssh/config | less

查看SSH客户端用户特定的配置文件

cat ~/.ssh/id_{type} | less

查看SSH客户端私钥;type是 中的任何一个rsa, ed25519, dsa, ecdsa

cat ~/.ssh/id_{type}.pub | less

查看SSH客户端公钥;type是 中的任何一个rsa, ed25519, dsa, ecdsa

cat ~/.ssh/known_hosts | less

查看SSH客户端登录的主机

cat ~/.ssh/authorized_keys | less

查看SSH客户端授权登录密钥

保存用于公钥身份验证的私有 SSH 密钥(RSA、DSA、ECDSA、Ed25519)

ssh-agent -E fingerprint_hash

指定显示密钥指纹时使用的哈希算法。有效fingerprint_hash选项是sha256(默认)和md5

ssh-agent -t lifetime

设置lifetime身份/私钥的最大值,可由 中的相同设置覆盖ssh-add。生命周期示例:• 600= 600 秒(10 分钟) • 23m= 23 分钟 • 1h45= 1 小时 45 分钟

将 SSH 密钥添加到ssh-agent

列出缓存的私钥ssh-agent

ssh-add -t lifetime

设置lifetime身份/私钥的最大值。示例lifetime:• 600= 600 秒(10 分钟) • 23m= 23 分钟 • 1h45= 1 小时 45 分钟

列出所有已保存身份的公钥参数

删除所有缓存的私钥

ssh-copy-id

在远程服务器上复制、安装和配置SSH密钥

ssh-copy-id user@server

将SSH密钥复制到 aserver作为user

ssh-copy-id server1

server1使用默认登录名复制到某个别名服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

将特定密钥复制到服务器上作为一个用户

4.远程服务器管理

SSH服务器的操作系统大多是Unix/Linux,因此通过SSH登录服务器后,以下命令与Unix/Linux中的命令基本相同。

命令

功能描述

更改当前工作目录

停止正在运行的进程

列出文件和目录

创建一个新目录

移动文件或目录

使用 Nano 在终端中编辑文件

列出正在运行的进程

显示当前工作目录

查看文件的最后几行(默认为 10 行)

监控系统资源和进程

创建新文件或更新现有文件的时间戳

使用 Vim 在终端中编辑文件

关闭 SSH 会话

以下是在Windows10上使用PowerShell通过SSH访问网络计算机上的账户:

5.高级SSH命令

在下表中,列出了一些可以帮助完成网络管理任务的复杂SSH实用程序, 包括: SSH文件系统(SSHFS)、数据压缩和X11转发。

要通过SSH进行X11转发, 需要执行三个步骤:

(1) 要实现X11转发,在配置文件~/.ssh/config配置以下参数:

ForwardAgent yes

ForwardX11 yes

(2) 要允许X11执行, 在配置文件:/etc/ssh/sshd_config中配置以下参数:

(3) 在服务器中安装xauth,设置X11身份验证。

命令

功能描述

将远程服务器的文件系统挂载到本地目录上。在使用前将此程序安装。安装命令示例: • sudo apt install sshfs # Ubuntu/Debian

• sudo yum install fuse-sshfs # CentOS

ssh -C hostname

压缩SSH流量以提高慢速连接的性能。或者,插入选项Compression yes到SSH配置文件中

ssh -o "Compression yes" -v hostname

另一种压缩SSH流量以提高慢速连接性能的方法。这与插入配置选项Compression yes到SSH配置文件中的方法相同。

ssh -X user@server

通过SSH启用X11转发: 以user用户身份将图形应用程序从远程server转发到本地

ssh -o ForwardX11=yes user@server

通过SSH启用X11转发: 以user用户身份将图形应用程序从远程server转发到本地

禁用X11转发

启用可信X11转发。此选项比ssh -X将SSH 服务器的整个显示转发到客户端的风险更大

6.隧道技术

使用下面的SSH命令创建安全隧道:

选项

功能描述

语法/示例

将本地主机的某个端口转发到远程主机, 实现从本地主机到远程主机的连接。本地主机充当服务中继, SSH将流量通过连接转发到远程主机上的指定端口

命令语法:# ssh user@ssh_server -L local_port:destination:remote_port

示例: # ssh root@192.168.0.1 -L 2222:10.0.1.5:3333

实现通过跳转主机连接目标主机。该参数是在连接到目标主机之前,先通过跳板主机建立连接,然后再跳转到目标主机上

示例1:# ssh -J proxy_host1 remote_host

示例2:# ssh -J user@proxy_host1 user@remote_host2

示例3(多个堡垒主机跳转): # ssh -J user@proxy_host1:port1,user@proxy_host2:port2 user@remote_host3

该参数实现反向端口转发, 它允许远程主机将其某个端口转发到本地主机, 实现从远程主机到本地主机的连接。本地主机此时充当服务中继,远程主机将流量通过SSH连接转发到本地主机上的指定端口。其中: -N参数表示不执行远程命令, 对于专用端口转发很有用。-f参数表示在后台运行SSH

语法: ssh -R [remote:]remote_port:destination:destination_port [user@]ssh_serve

例子: # ssh -R 8080:192.168.3.8:3030 -N -f user@remote.host

在本地主机上创建一个SOCK5代理服务器, 使得通过该代理的流量都经过SSH连接到远程主机。本地主机上的指定端口将作为SOCK5代理端口, 可以配置浏览器或其他应用程序来使用该代理。流量将通过SSH连接到远程主机, 然后由远程主机发出

语法: # ssh -D local_port_number user@remote_host

例子: # ssh -D 6677 -q -C -N -f me@192.168.5.5

7.总结

上面总结了SSH、SCP、SFTP、SSH配置命令以及各种SSH隧道命令。以下是一些更高效、更安全的使用SSH的一些建议:

(1) 禁用X11和TCP转发, 攻击者可以利用此类弱点访问网络上的其他系统。将sshd_config中的选项调整如下:

(2) 更改sshd_config中的默认配置选项, 将默认端口22改成其它数字。

(3) 使用ssh-keygen创建SSH证书并对客户端进行身份验证。

(4) 利用隧道命令使用堡垒主机。

(5) 限制SSH登录到特定的IP地址,例如通过在sshd_config中使用AllowUsers选项添加用户过滤。

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/baihuokuaixun/33775.html

联系我们

QQ号:***

微信号:***

工作日:9:30-18:30,节假日休息