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

評(píng)論