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命令清单:
3.SSH配置和选项
以下命令记录了SSH如何在不同机器上记录登录凭据:
4.远程服务器管理
SSH服务器的操作系统大多是Unix/Linux,因此通过SSH登录服务器后,以下命令与Unix/Linux中的命令基本相同。
以下是在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身份验证。
6.隧道技术
使用下面的SSH命令创建安全隧道:
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选项添加用户过滤。