iTerm 2打造ssh完美鏈接Linux服務器快捷方法

 

iTerm 2打造ssh完美鏈接Linux服務器快捷方法

版權聲明:本文爲博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處連接和本聲明。
原文連接: http://www.javashuo.com/article/p-crydtmlm-nb.html

 使用MacOS系統的同窗都知道iterm2,怎麼打造最強終端的方案iTerm2 + Zsh + vim,你們有興趣能夠去搜一下,這裏主要介紹ssh完美鏈接Linux服務器方案。
 常常和服務器打交道,免不了要遠程鏈接服務器,怎麼使用iterm2鏈接服務器,網上一搜一大把。但因爲iterm2默認不能使用rz指令上傳文件,以及我如今公司遠程登陸測試服務器,採用的方案是須要先經過跳板機登陸。並且每每都會爲每一位開發配置一個token,動態的產生一個6位的數字串,用來做爲登陸密碼。
 網上的一些方法總會不那麼完美,在這裏作個整理,順便結合個人測試,提供一個我本身實踐出來的完美解決方案。git


方案一:expect+配置文件

expect鏈接的方式有兩種:shell

第一種 expect腳本文件

1.在一個目錄下建立一個expect腳本文件,建議在本身的.ssh目錄下,爲了分類能夠有子目錄。
內容以下:vim

#!/usr/bin/expect -f
  set user xxx
  set password xxxxx
  set host xxxxx
  set port 22
  set timeout -1

  spawn ssh $user@$host
  expect "*assword:*"
  send "$password\r"
  interact
  expect eof
 

 

 

2.進入iterm2->preference->profiles
新建一個登陸標籤,內容以下
在這裏插入圖片描述
在send text at start 處輸入指令
expect /Users/xxx/.ssh/vmware/login_xxx服務器

而後在profiles下點擊具體標籤就能夠登錄了
在這裏插入圖片描述markdown

第二種 登陸腳本加參數

1.建立登陸腳本 item2login.shsession

#!/usr/bin/expect
set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
        "(yes/no)?"
        {send "yes\n";exp_continue}
        "password:"
        {send "[lindex $argv 3]\n"}
}
interact
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.授予執行權限
chmod +x item2login.shssh

3.進入iterm2->preference->profiles
在這裏插入圖片描述在send text at start 處輸入指令
~/.ssh/item2login.sh 22 用戶 ip 密碼測試

以上是expect的兩種登陸方式,各有各的好處,登陸服務器,進行相關操做都沒問題,不過當你須要上傳下載文件就會有問題。
首先iterm默認不支持rz相關指令,不過對於如何配置iterm2的lrzsz,網上有具體操做文檔,我這裏就再也不敘述了
用expect的方式登陸服務器,用rz、sz進行相關操做時,顯示都是沒問題的,能夠正常選擇上傳文件或者選擇下載目錄,沒有拋出任何異常可是最後上傳文件也找不到不過文件卻不能成功上傳下載。
並且我在實際使用過程當中,還發現這種登陸方式對於scp 的指令支持的不是很好輸入scp 後面接文件,使用tab鍵進行目錄或者文件提示的時候,會報錯,以下圖
在這裏插入圖片描述atom

方案二: sshpass指令登陸

1.安裝sshpass
具體安裝方法以下:spa

sudo brew install http://git.io/sshpass.rb
 
  • 1

2.進入iterm2->preference->profiles
建立登陸標籤,在send text at start 處輸入指令

/usr/local/bin/sshpass  -o StrictHostKeyChecking=no -p 22 passwrod ssh userName@ip
 
  • 1

這種方式登陸,可使用rz/sz指令,對於使用帳號密碼登陸服務器的同窗已經能夠了。可是對於經過跳板機登陸,爲每一位開發配置一個token,動態的產生一個6位的數字串,用來做爲登陸校驗的方式會有問題,不能出現輸入提示,一直在等待中,就像下圖同樣,咱們公司恰巧就是這種狀況,對於這種狀況我沒有在網上搜到相關的解決方案,不過通過個人嘗試,成功搞出了一種解決方案。
在這裏插入圖片描述

方案三: ssh指令登陸

 其實這種方式也是最基本的方式,前幾種方式都是使用的loginshell的方式,其實iterm還有command 的方式讓你輸入登陸指令的,直接ssh登陸就能夠,只是這種方式須要手動輸入密碼,對於每次都要輸入動態碼的方式,只能每次都輸入了,以下圖
在這裏插入圖片描述而後,sshpass的問題就獲得解決了
在這裏插入圖片描述
不過對於這種狀況,至關於新建一個新建一個shell標籤就得輸入隨機碼,也很不方便,但Mac版的secureCRT支持克隆會話,且直接登陸服務器。對於MAC下iterm2 實現clone session,實現起來也比較簡單。

克隆會話

在~目錄下的.ssh文件夾衝建立一個config文件
若是已經有的話,能夠直接把內容添加進入,建立其餘文件名是不行的
文件內容輸入:

host *
    ControlMaster auto
    ControlPath ~/.ssh/master-%r@%h:%p
 

 

 
相關文章
相關標籤/搜索