在 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 命令行進行遠程管理和操作。