一、什么是SSH?
簡單說,SSH是一種網絡協議,用於計算機之間的加密登錄。
如果一個用戶從本地計算機,使用SSH協議登錄另一台遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。
最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標准配置。
需要指出的是,SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。
二、最基本的用法
SSH主要用於遠程登錄。假定你要以用戶名user,登錄遠程主機host,只要一條簡單命令就可以了。
$ ssh user@host
eg:
ssh james@192.168.1.119
如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名。
ssh 192.168.1.119
SSH的默認端口是22,也就是說,你的登錄請求會送進遠程主機的22端口。使用p參數,可以修改這個端口。
三、SCP使用
scp是有Security的文件copy,基於ssh登錄。
操作起來比較方便,比如要把當前一個文件copy到遠程另外一台主機上,可以如下命令。
scp /home/james/data.txt root@192.168.1.119:/home/james
然后會提示你輸入另外那台192.168.1.119主機的root用戶的登錄密碼,接着就開始copy了。
如果想反過來操作,把文件從遠程主機copy到當前系統,也很簡單。
sudo apt-get install expect
安裝完成之后,書寫腳本scp.sh
#!/usr/bin/expect -f set timeout 30 spawn scp TcrController james@192.168.1.119:/home/james/ws expect "*password:" send "123456\r" expect eof
注意:expect跟bash類似,使用時要先登錄到expect,所以首行要指定使用expect
在運行腳本時候要expect file,不能sh file了
首行指定用來執行該腳本的命令程序,這里是/usr/bin/expect
上面語句第一句是設定超時時間為30s,spawn是expect的語句,執行命令前都要加這句
expect "password:"這句意思是交互獲取是否返回password:關鍵字,因為在執行ssh時會返回輸入password的提示:james@192.168.1.119's password:
send就是將密碼123456發送過去
expect eof 子進程已經結束的eof字符,expect腳本也就退出結束
interact代表執行完留在遠程控制台,不加這句執行完后返回本地控制台
