SSH命令行操作技巧

什么是SSH?

Secure Shell(SSH)是一种网络协议,用于为两台计算机之间的通信提供安全连接。它允许用户通过加密的安全隧道进行远程访问和文件传输。使用SSH可以确保数据在传输过程中不会被窃取或篡改。

常用的SSH命令

1. 连接到服务器

使用ssh命令,您可以直接连接到远程服务器:

ssh username@hostname

其中username是您在服务器上的用户名,hostname是目标服务器的主机名或IP地址。

2. 使用密钥进行身份验证

为了提高安全性,可以使用公私钥对进行身份验证。首先生成密钥对:

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

3. 在本地创建一个会话

您可以快速在本地终端中打开一个新的SSH会话,而不必每次都输入用户名和主机名:

ssh -t hostname "bash -l"

这将启动远程服务器上的一个交互式bash shell。

4. 离线传输文件

使用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/

5. 使用SSH隧道进行安全访问

ssh命令还可以用来创建端口转发(即SSH隧道),从而在不安全的网络上建立一个加密通道。例如,通过SSH连接到服务器并打开本地端口8080和远程端口22之间的隧道:

ssh -L 8080:localhost:22 username@hostname

现在您可以使用http://localhost:8080/来访问远程服务器的shell。这在需要通过非安全网络访问服务器时非常有用。

6. 查看SSH连接状态

要检查当前活跃的SSH连接,请查看系统日志文件,例如:

tail -f /var/log/auth.log

或者,您可以使用netstatss命令来列出活动连接:

netstat -anp | grep sshd

7. 关闭不必要的SSH服务端口

为了增加安全性,可以将SSH的默认监听端口更改为非标准端口。编辑SSH配置文件 /etc/ssh/sshd_config,更改 Port 行:

Port 22
# 更改为:
Port 1024

然后重启SSH服务以应用更改。

结语

通过上述技巧和命令行操作,您可以充分利用SSH的强大功能来提高远程访问的安全性和效率。熟练掌握这些技术不仅能帮助您更好地管理服务器,还能确保数据传输的安全性。