我們使用SSH訪問Linux香港服務器最常用的方式之一。事實上,ssh也被用來訪問一些防火牆、路由器和其他類似設備。在本教程中,我們將學習如何在單行命令中使用帶密碼的SSH命令。
我們為什么需要這樣做呢?
比如你想訪問服務器或運行一個腳本的命令,自動運行使用crontab等,或者你只是偷懶。不管是什么情況,有一個問題是肯定的,那就是這是最不安全的訪問服務器的方式之一,因為你會把用戶名和密碼泄露給任何有權限訪問系統的人,因為命令會被存儲在歷史記錄中,也可以在腳本中看到密碼。
有其他方法可以安全地SSH服務器,而不必輸入用戶名和密碼。為此,我們可以使用SSH密鑰,公共/私人SSH密鑰允許服務器使用證書來驗證服務器的憑證,我們不需要輸入任何用戶名或密碼(盡管我們也可以使用密碼口令來驗證證書)。
但即使你需要使用單行命令來使用帶密碼的ssh命令,那么請閱讀前面的文章。我們將討論如何使用帶密碼的單行本ssh命令的兩種方法。
1、使用'SSHPASS'命令
Sshpass命令是一個非常好用的Linux命令,它提供了一個簡單的非交互式ssh登錄方式,並會為你輸入ssh密碼。我們需要在系統中安裝這個命令。
對於Ubuntu
$ sudo apt install sshpass
對於CentOS/RHEL
SSHPASS命令在EPEL倉庫中是可用的,所以我們需要先安裝它。
# yum install epel-release
安裝完成后,運行以下命令。
# yum install sshpass
現在讓我們看看如何使用sshpass命令來使用帶密碼的ssh命令。
# sshpass -p "ENTER PASSWORD HERE" ssh testuser@192.168.10.10。
一個例子是:
# ssh -p "MY@Password" ssh shusain@192.168.10.10
請注意,我們在這里使用了選項 "p "來提及sshpass命令的密碼。但是如果我們需要使用自定義端口來訪問服務器上的ssh呢。這里也是一個例子。
# ssh -p "MY@Password" ssh -p 2222 shusain@192.168.10.10。
所以sshpass的基本語法是,使用sshpass命令,然后是sshpass的選項,然后使用你通常使用的ssh命令。現在我們來討論一下第二種方法。
2、使用'EXPECT'命令
這是另一個可以用於帶密碼ssh命令的命令。要在Linux系統上安裝EXPECT命令,請運行以下命令。
Ubuntu
$ sudo apt install expect
CentOS/RHEL
Expect命令在EPEL倉庫中是可用的,所以我們需要先安裝它。
# yum install epel-release
安裝完畢后,運行以下命令在系統上安裝期望命令。
# yum install expect
現在要使用的一次襯托命令期待ssh的命令是。
# expect -c 'spawn ssh shusain@192.168.10.10 ; expect "password:"; send "MY@Password/r"; interact'
要解釋一下這個問題。
當與 expect 命令一起使用時,-c 將會在其他命令之前先執行一個命令。
expect "password: "將查找密碼的提示。
send “MY@Password\r"將在提示時發送密碼(在輸入密碼后加上"/r")。
例如,這也可以在腳本中使用。
#!/usr/bin/expect -f
spawn ssh shusain@192.168.10.10
expect “password:”
send “MY@Password\r”
至此,我們關於如何在單行中使用帶密碼的SSH命令的教程就完成了。歡迎訪問A5互聯https://www.a5idc.net/了解更多。