1 SSH简介
SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。
2 SSH用法
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface][-b bind_address] [-c cipher_spec] [-D [bind_address:]port][-E log_file] [-e escape_char] [-F configfile] [-I pkcs11][-i identity_file] [-J [user@]host[:port]] [-L address][-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port][-Q query_option] [-R address] [-S ctl_path] [-W host:port][-w local_tun[:remote_tun]] destination [command]
2.1 常见用法
连接到远程服务器:
ssh username@hostname
username
是您要连接到远程服务器的用户名。hostname
是服务器的地址或IP地址。
例如,如果您的用户名为"root",要连接到远程服务器的IP地址为"192.168.109.128",命令如下:
ssh root@192.168.109.128
2.2 密码身份验证
在首次连接到服务器时,SSH通常会要求您输入密码。输入密码后,如果密码正确,您将被授予对服务器的访问权限。
2.3 公钥身份验证(免密登录)
更安全的方式是使用SSH密钥对进行身份验证。首先,生成密钥对,然后将公钥上传到服务器。一旦配置完成,您可以通过私钥进行身份验证,而不需要输入密码。
生成密钥对
ssh-keygen -t rsa
将公钥上传到服务器(将id_rsa.pub
更改为您的公钥文件名):
ssh-copy-id username@hostname
之后,您可以通过SSH私钥进行身份验证,而不需要密码:
ssh username@hostname
2.4 执行远程命令
您可以在SSH连接中执行远程命令。命令将在远程服务器上运行,然后将输出返回到本地终端。示例:
ssh username@hostname "command"
例如,运行远程服务器上的"ls"命令并显示结果:
ssh myuser@192.168.1.100 "ls"
2.5 文件传输(SCP和SFTP)
SSH还提供了用于安全文件传输的工具,如SCP和SFTP。您可以使用这些工具将文件从本地系统上传到远程服务器,或者从远程服务器下载文件到本地系统。
使用SCP上传文件到远程服务器:
scp localfile.txt username@hostname:/path/to/remote/directory/
使用SCP从远程服务器下载文件到本地系统:
scp username@hostname:/path/to/remote/file.txt localdirectory/
使用SFTP以交互方式传输文件:
sftp username@hostname
sftp是Secure File Transfer Protocol的缩写,是一种安全的文件传输协议。它可以在本地主机和远程主机之间传输文件,并提供了基本的文件管理功能。常用的命令有:
-
put: 上传文件
-
get: 下载文件
-
ls: 查看远程主机上的文件列表
-
cd: 更改远程主机上的工作目录
-
exit: 退出sftp
-
help: 显示帮助信息
3 SSH工作原理
SSH由服务器和客户端组成,为建立安全的SSH通道,双方需要先建立TCP连接,然后协商使用的版本号和各类算法,并生成相同的会话密钥用于后续的对称加密。在完成用户认证后,双方即可建立会话进行数据交互。SSH的工作流程包括如下几个阶段。