SSH常用命令
SSH安裝
1. ubuntu
sudoapt update# 更新倉庫 sudoapt install openssh-server# 安裝openssh vi /etc/ssh/sshd_config# 進入配置文件,找到port=22那行,取消注釋 sudoservice ssh restart# 重啟服務,然后就可以連接了,有時候root用戶連不上,可以用普通用戶登錄再切換到root
1. SSH 連接命令
# 基本連接 ssh username@hostname # 指定端口連接 ssh -p 2222 username@hostname # 使用密鑰連接 ssh -i /path/to/private_key username@hostname
2. SSH 密鑰管理
# 生成 SSH 密鑰對 ssh-keygen -t rsa -b 4096 # 復制公鑰到遠程服務器 ssh-copy-id username@hostname # 查看已知主機 cat~/.ssh/known_hosts
3.SSH傳輸文件
# 1、從服務器上下載文件 scp username@servername:/path/filename /var/www/local_dir(本地目錄) # 例如scp [email protected]:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下載到/var/www/local_dir(本地目錄) # 2、上傳本地文件到服務器 scp /path/filename username@servername:/path # 例如scp /var/www/test.php [email protected]:/var/www/ 把本機/var/www/目錄下的test.php文件上傳到192.168.0.101這臺服務器上的/var/www/目錄中 # 3、從服務器下載整個目錄 scp -r username@servername:/var/www/remote_dir/(遠程目錄) /var/www/local_dir(本地目錄) # 例如:scp -r [email protected]:/var/www/test /var/www/ # 4、上傳目錄到服務器 scp -r local_dir username@servername:remote_dir # 例如:scp -r test [email protected]:/var/www/ 把當前目錄下的test目錄上傳到服務器的/var/www/ 目錄
4. SSH 端口轉發
# 本地端口轉發 ssh -L local_porttarget_port username@hostname # 遠程端口轉發 ssh -R remote_porttarget_port username@hostname #不發送任何命令,只用來建立連接。沒有這個參數,會在 SSH 服務器打開一個 Shell。會在前臺打開 ssh -R <服務器端口>22 -N root@<服務器地址> # 將SSH命令放到后臺,如果想要停止需要殺死進程 ( 比較常用 ) ssh -R <服務器端口>22 -Nf root@<服務器地址> # 動態端口轉發(SOCKS代理) ssh -D local_port username@hostname # 基本格式 ssh [選項] username@hostname # 常用選項說明 -L [本地IP:]本地端口:目標IP:目標端口 # 本地端口轉發 -R [遠程IP:]遠程端口:目標IP:目標端口 # 遠程端口轉發 -D [本地IP:]本地端口 # 動態端口轉發(SOCKS代理) # 重要的輔助選項 -N # 不執行遠程命令,僅用于端口轉發 -f # 后臺運行 -C # 壓縮數據傳輸 -q # 安靜模式,減少日志輸出 -v # 詳細模式,用于調試 -vv # 更詳細的模式 -4 # 僅使用 IPv4 -6 # 僅使用 IPv6 # 連接相關選項 -p 端口 # 指定 SSH 服務器端口 -i 密鑰 # 指定私鑰文件路徑
5. SSH 配置管理
# 編輯 SSH 配置文件 vim ~/.ssh/config # 配置文件示例 Host myserver HostName hostname User username Port 2222 IdentityFile ~/.ssh/id_rsa
常見用途對比:
1.安全性
? 密碼登錄:便捷但相對不安全
? 密鑰登錄:更安全,推薦使用
2.傳輸方式
?scp:簡單直接,適合臨時傳輸
?rsync:支持增量傳輸,適合大量文件同步
3.端口轉發
? 本地轉發:訪問遠程內網服務
? 遠程轉發:讓遠程訪問本地服務
? 動態轉發:創建 SOCKS 代理
4.連接管理
? 普通連接:一次性使用
? 配置文件:適合經常連接的服務器
使用建議:
1. 優先使用密鑰認證
2. 重要服務器建議修改默認 22 端口
3. 經常連接的服務器建議配置~/.ssh/config
4. 大文件傳輸建議使用rsync而不是scp
5. 注意保護好私鑰文件的安全
這些命令和用法覆蓋了日常 SSH 使用的大部分場景,建議根據實際需求選擇合適的命令使用。
Ubuntu 下SSH 服務的啟動、停止和管理方法:
安裝 SSH服務
# 安裝 OpenSSH 服務器 sudoapt update sudoapt install openssh-server
1. service 命令(傳統方式)
# 啟動 sudoservice ssh start # 停止 sudoservice ssh stop # 重啟 sudoservice ssh restart # 查看狀態 sudoservice ssh status
2. /etc/init.d 腳本方式
# 啟動 sudo/etc/init.d/ssh start # 停止 sudo/etc/init.d/ssh stop # 重啟 sudo/etc/init.d/ssh restart # 查看狀態 sudo/etc/init.d/ssh status
3. systemctl 命令(現代 systemd 方式)
# 啟動 sudosystemctl start sshd # 停止 sudosystemctl stop sshd # 重啟 sudosystemctl restart sshd # 查看狀態 sudosystemctl status sshd
4. 直接啟動 sshd 進程
# 直接啟動 sshd sudo/usr/sbin/sshd # 使用特定配置文件啟動 sudo/usr/sbin/sshd -f /path/to/sshd_config
不同系統的區別:
1.Ubuntu/Debian系統中服務名通常是ssh
sudoservice ssh start
2.CentOS/RHEL系統中服務名通常是sshd
sudoservice sshd start
注意事項:
1. 現代 Linux 系統推薦使用systemctl命令
2.service命令在新系統中實際上是systemctl的封裝
3./etc/init.d腳本方式是最傳統的方法,但仍被支持
4. 直接啟動sshd進程通常用于調試目的
選擇哪種方式主要取決于:
? 系統版本
? 個人習慣
? 具體需求(如調試)
所有這些方法都能達到相同的目的,只是使用的方式不同。
3. SSH 配置文件位置
# 主配置文件 sudovim /etc/ssh/sshd_config # 常見配置項示例 Port 22 # SSH 端口 PermitRootLogin no # 禁止 root 登錄 PasswordAuthenticationyes# 允許密碼認證
4. 檢查 SSH 服務
# 檢查 SSH 是否正在運行 ps aux | grep ssh # 檢查 SSH 端口是否開放 sudonetstat -tulpn | grep ssh # 檢查防火墻是否允許 SSH sudoufw status
5. 防火墻設置
# 允許 SSH 連接 sudoufw allow ssh # 允許特定端口(如果修改了默認端口) sudoufw allow 2222/tcp
常見問題解決:
1.服務無法啟動
# 查看詳細日志 sudojournalctl -u ssh # 檢查配置文件語法 sudosshd -t
2.權限問題
# 修復 SSH 目錄權限 sudochmod755 /etc/ssh sudochmod600 /etc/ssh/ssh_host_*_key sudochmod644 /etc/ssh/ssh_host_*_key.pub
安全建議:
1.基本安全配置
# 編輯 SSH 配置文件 sudovim /etc/ssh/sshd_config # 推薦的安全設置 PermitRootLogin no PasswordAuthentication no MaxAuthTries 3 Protocol 2
2.使用密鑰認證
# 在客戶端生成密鑰對 ssh-keygen -t rsa -b 4096 # 將公鑰復制到服務器 ssh-copy-id username@server_ip
常用維護命令:
1.查看連接狀態
# 查看當前 SSH 連接 who w # 查看 SSH 登錄日志 sudocat/var/log/auth.log | grep ssh
2.配置文件備份
# 備份 SSH 配置 sudocp/etc/ssh/sshd_config /etc/ssh/sshd_config.backup
記住,每次修改 SSH 配置文件后,都需要重啟 SSH 服務才能生效:
sudosystemctl restart ssh
這些是 Ubuntu 下管理 SSH 服務的基本操作,建議在修改配置時先備份,并保持一個可用的連接會話,以防配置錯誤導致無法連接。
SSH 問題
解決 ssh 連接遠程主機超時未使用自動斷開
參考:https://blog.csdn.net/Gelomen/article/details/109121069
這個問題可以通過配置 SSH 客戶端來保持連接活躍。有以下幾種解決方案: 1.修改 SSH 客戶端配置文件(推薦方案): 編輯 ~/.ssh/config 文件(如果沒有則創建),添加以下配置: Host * ServerAliveInterval60 ServerAliveCountMax3 這個配置的含義是: - ServerAliveInterval60:每60秒發送一次心跳包 - ServerAliveCountMax3:如果連續3次心跳包沒有響應,則斷開連接 2.在建立 SSH 連接時直接指定參數: ssh -o ServerAliveInterval=60-o ServerAliveCountMax=3user@remote-server 3.如果是在使用 SSH 隧道,可以這樣: ssh -N -f -o ServerAliveInterval=60-o ServerAliveCountMax=3-L local-port:remote-host:remote-port user@remote-server 4.如果你是服務器管理員,也可以通過修改服務器端的 SSH 配置(/etc/ssh/sshd_config)來實現: ClientAliveInterval60 ClientAliveCountMax3 修改服務器配置后需要重啟 SSH 服務: sudo systemctl restart sshd 推薦使用第一種方案(修改客戶端配置文件),因為: 1.只需配置一次,永久生效 2.對所有 SSH 連接都有效 3.不需要每次手動輸入參數 注意:設置的時間間隔不要太短(比如小于30秒),否則可能會增加不必要的網絡開銷。60秒通常是一個比較好的選擇。
Windows 下關閉 SSH 后臺連接的方法 (在使用端口轉發設置參數為-f時)
1. 使用任務管理器:
# 打開任務管理器的方法: # 1. Ctrl + Shift + Esc # 2. 右鍵任務欄 -> 任務管理器 # 3. Ctrl + Alt + Delete -> 任務管理器 # 在"詳細信息"或"進程"標簽下找到 ssh.exe 進程并結束
2. 使用命令行查找和終止進程:
# PowerShell 命令 # 查看 SSH 進程 Get-Processssh # 終止所有 SSH 進程 Get-Processssh |Stop-Process # 或者使用 CMD 命令 # 查看 SSH 進程 tasklist | findstr"ssh" # 通過 PID 終止進程 taskkill /PID <進程ID> /F # 終止所有 SSH 進程 taskkill /F /IM ssh.exe
3. 如果使用 Git Bash:
# 查看 SSH 進程 ps aux | grep ssh # 終止進程 kill<進程ID>
建議:
1. 在使用-Nf啟動 SSH 連接時,可以記錄下進程 ID:
# 將進程 ID 保存到文件 ssh -Nf ... &echo$! > ssh_pid.txt
2. 創建一個批處理文件來管理連接:
@echo off REM start_ssh.bat ssh -Nf ... & echo %ERRORLEVEL% > ssh_pid.txt REM stop_ssh.bat for /f %%i in (ssh_pid.txt) do taskkill /PID %%i /F del ssh_pid.txt
鏈接:https://blog.csdn.net/qq_41685627/article/details/140019998
-
端口
+關注
關注
4文章
1045瀏覽量
32718 -
命令
+關注
關注
5文章
730瀏覽量
22674 -
Ubuntu
+關注
關注
5文章
586瀏覽量
30826 -
SSH
+關注
關注
0文章
194瀏覽量
16794
原文標題:別再只會ssh連接了!這些SSH高階命令讓你的工作效率起飛?
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
windowsxp常用命令
Memcache系統常用命令講解

評論