在 CentOS 系统中,SSH 命令行是一个非常强大的工具,用于远程管理和操作服务器。以下是一些常用的 SSH 命令行技巧:
ssh username@hostname_or_ip
username 是你在远程服务器上的用户名。hostname_or_ip 是远程服务器的主机名或 IP 地址。为了避免每次连接时输入密码,可以使用 SSH 密钥对进行认证。
ssh-keygen -t rsa -b 4096
这会在 ~/.ssh 目录下生成 id_rsa(私钥)和 id_rsa.pub(公钥)文件。
ssh-copy-id username@hostname_or_ip
为了简化连接过程,可以在 ~/.ssh/config 文件中配置常用的连接信息。
Host myserver
HostName hostname_or_ip
User username
IdentityFile ~/.ssh/id_rsa
之后可以直接使用 ssh myserver 连接。
SSH 隧道可以用于安全地转发本地端口到远程服务器。
ssh -L local_port:remote_host:remote_port username@hostname_or_ip
例如,将本地的 8080 端口转发到远程服务器的 80 端口:
ssh -L 8080:localhost:80 username@hostname_or_ip
ssh -R remote_port:localhost:local_port username@hostname_or_ip
例如,将远程服务器的 8080 端口转发到本地的 80 端口:
ssh -R 8080:localhost:80 username@hostname_or_ip
SSH 代理可以用于在多个 SSH 会话之间共享认证信息。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
为了避免长时间无操作导致的连接断开,可以使用 ServerAliveInterval 选项。
在 ~/.ssh/config 文件中添加:
Host *
ServerAliveInterval 60
这会每 60 秒发送一次保持连接的信号。
可以直接在 SSH 命令中执行远程命令,而不需要进入交互式 shell。
ssh username@hostname_or_ip "command_to_run"
例如,在远程服务器上列出当前目录的文件:
ssh username@hostname_or_ip "ls -l"
可以使用 scp 命令在本地和远程服务器之间复制文件。
scp local_file username@hostname_or_ip:/remote/path
scp username@hostname_or_ip:/remote/path/remote_file local_path
可以使用 ssh 和 xargs 或 parallel 等工具进行批量操作。
例如,批量重启多个服务器:
echo -e "server1\nserver2\nserver3" | xargs -I {} ssh username@{}
这些技巧可以帮助你更高效地使用 SSH 命令行进行远程管理和操作。