您当前位置:资讯中心 >安全 >浏览文章

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

来源:suntigerr 日期:2024/1/22 11:19:37 阅读量:(0)

1.关于SSH

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

  • ssh-keygen:用于为 SSH 创建新的身份验证密钥对;
  • SCP(安全复制协议):用于在网络上的主机之间复制文件;
  • SFTP(安全文件传输协议):用于发送和接收文件。它是FTP(文件传输协议)的SSH安全版本,它已取代 FTP 和 FTPS(FTP 安全)成为通过 Internet 共享文件的首选机制。

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

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

2.基本SSH命令

以下是整理的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

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

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

递归复制整个目录

scp -r user@server:/folder dest/

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

scp user@server:/folder/* dest/

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

scp -C

压缩数据的选项

scp -v

打印详细信息的选项

scp -p

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

scp -P 8080

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

scp -B

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

sftp

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

sftp -p

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

sftp -P 8080

连接到远程主机端口8080

sftp -r

上传和下载时递归复制整个目录。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-agent

保存用于公钥身份验证的私有 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-add

将 SSH 密钥添加到ssh-agent

ssh-add -l

列出缓存的私钥ssh-agent

ssh-add -t lifetime

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

ssh-add -L

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

ssh-add -D

删除所有缓存的私钥

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中的命令基本相同。


命令

功能描述

cd

更改当前工作目录

kill

停止正在运行的进程

ls

列出文件和目录

mkdir

创建一个新目录

mv

移动文件或目录

nano

使用 Nano 在终端中编辑文件

ps

列出正在运行的进程

pwd

显示当前工作目录

tail

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

top

监控系统资源和进程

touch

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

vim

使用 Vim 在终端中编辑文件

exit

关闭 SSH 会话

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

5.高级SSH命令

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

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

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

Host*

ForwardAgent yes

ForwardX11  yes

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

  • X11Forwarding  yes
  • X11DisplayOffset 10
  • X11UseLocalhost no

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

命令

功能描述

sshfs

将远程服务器的文件系统挂载到本地目录上。在使用前将此程序安装。安装命令示例:                      ? 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转发到本地

ssh -x

禁用X11转发

ssh -Y

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

6.隧道技术

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

选项

功能描述

语法/示例

-L

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

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

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

-J

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

示例1:# ssh -J proxy_host1 remote_host

2

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

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

-R

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

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

r

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

-D

在本地主机上创建一个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中的选项调整如下:

  • 将AllowTcpForwarding设置为no。
  • 将X11Forwarding设置为no。

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

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

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

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

关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。