Secure Shell(SSH)是一种网络协议,用于为两台计算机之间的通信提供安全连接。它允许用户通过加密的安全隧道进行远程访问和文件传输。使用SSH可以确保数据在传输过程中不会被窃取或篡改。
使用ssh
命令,您可以直接连接到远程服务器:
ssh username@hostname
其中username
是您在服务器上的用户名,hostname
是目标服务器的主机名或IP地址。
为了提高安全性,可以使用公私钥对进行身份验证。首先生成密钥对:
ssh-keygen -t rsa
这将会创建一个默认位于~/.ssh/id_rsa
的私钥文件和一个位于~/.ssh/id_rsa.pub
的公钥文件。
将公钥传输到服务器上,通过以下命令添加到/home/username/.ssh/authorized_keys
:
cat ~/.ssh/id_rsa.pub | ssh username@hostname 'mkdir -p .ssh && cat >> .ssh/authorized_keys'
之后可以使用密钥进行无密码登录:
ssh -i /path/to/private_key username@hostname
您可以快速在本地终端中打开一个新的SSH会话,而不必每次都输入用户名和主机名:
ssh -t hostname "bash -l"
这将启动远程服务器上的一个交互式bash shell。
使用scp
(secure copy)命令可以安全地在本地与远程系统之间传输文件。例如,从本地复制到远程:
scp /path/to/local/file username@hostname:/path/to/remote/directory/
反之亦然,从远程复制到本地:
scp username@hostname:/path/to/remote/file /path/to/local/directory/
ssh
命令还可以用来创建端口转发(即SSH隧道),从而在不安全的网络上建立一个加密通道。例如,通过SSH连接到服务器并打开本地端口8080和远程端口22之间的隧道:
ssh -L 8080:localhost:22 username@hostname
现在您可以使用http://localhost:8080/
来访问远程服务器的shell。这在需要通过非安全网络访问服务器时非常有用。
要检查当前活跃的SSH连接,请查看系统日志文件,例如:
tail -f /var/log/auth.log
或者,您可以使用netstat
或ss
命令来列出活动连接:
netstat -anp | grep sshd
为了增加安全性,可以将SSH的默认监听端口更改为非标准端口。编辑SSH配置文件 /etc/ssh/sshd_config
,更改 Port
行:
Port 22
# 更改为:
Port 1024
然后重启SSH服务以应用更改。
通过上述技巧和命令行操作,您可以充分利用SSH的强大功能来提高远程访问的安全性和效率。熟练掌握这些技术不仅能帮助您更好地管理服务器,还能确保数据传输的安全性。