免輸入密碼登錄
不需要iterm和zoc等第三方軟件,alias(純終端)和shuttle(有UI)兩種方式使用密碼(不需要手動輸入)登錄目標機器
準備工具
sshpass,shuttle
密碼配置文件
密碼文件(明文存儲,若考慮強安全問題,請繞道)
格式:hostname(已在系統hosts文件定義), user, password, ssh_port
$ cat /Users/zhang/zhangsan/work/secure
vm-001 root 123456 1122
vm-002 root 123456 22
腳本
- 核心腳本
$ cat /Users/zhang/zhangsan/work/ssh.sh
#!/bin/sh
WORK_DIR=$(dirname $0)
cd $WORK_DIR
HOST=$1;
USER=$2;
if [ "x${HOST}" == "x" -o "x${USER}" == "x" ]; then
exit 2
fi
PASS_PORT=$(grep -E "^$HOST\s+$USER\s+" secure)
PASS=$(echo $PASS_PORT | awk '{print $3}')
PORT=$(echo $PASS_PORT | awk '{print $4}')
if [ "x${PASS}" == "x" -o "x${PORT}" == "x" ]; then
exit 2
fi
exec sshpass -p $PASS ssh -p $PORT $USER@$HOST
更新邏輯腳本存儲至~/.bash_profile, 用戶每次登錄會根據secure重新生成alias和shuttle所需的配置文件
-
alias
在~/.bash_profile中添加以下腳本後,更新aliaswhile read LINE do if [ "x${LINE}" == "x" ]; then continue fi SSH_HOST=$(echo "$LINE" | awk '{print $1}') SSH_USER=$(echo "$LINE" | awk '{print $2}') alias "$SSH_HOST$SSH_USER"="sh /Users/zhang/zhangsan/work/ssh.sh $SSH_HOST $SSH_USER" done < /Users/zhang/zhangsan/work/secure
- shuttle
生成shuttle配置的python腳本
$ cat /Users/zhang/zhangsan/work/shuttle.py
import json
shuttle = {
"editor": "default",
"launch_at_login": True,
"terminal": "Terminal.app",
"iTerm_version": "nightly",
"default_theme": "Default",
"open_in": "tab",
"show_ssh_config_hosts": False,
"ssh_config_ignore_hosts": [],
"ssh_config_ignore_keywords": [],
"hosts": []
}
with open("/Users/zhang/zhangsan/work/secure", "r") as f:
while True:
line = f.readline()
if not line:
break
HOST_PORT = line.split()
if len(HOST_PORT) >= 3:
HOST, PORT = HOST_PORT[0], HOST_PORT[1]
shuttle["hosts"].append({"cmd": "sh /Users/zhang/zhangsan/work/ssh.sh {HOST} {PORT}".format(HOST=HOST, PORT=PORT) , "name": "{HOST} {PORT}".format(HOST=HOST, PORT=PORT)})
with open("/Users/zhang/.shuttle.json", "w") as f:
json.dump(shuttle, f, indent=2)
在~/.bash_profile中添加python /Users/zhang/zhangsan/work/shuttle.py,生成shuttle配置文件
備註
如果輸入alias中的vm-001root不能登錄,有可能是~/.ssh/known_hosts中沒有目標節點,先執行下ssh vm-001將其添加至列表中即可
mac下的zoc本來也是簡單好用的一款ssh客戶端,但已崩潰多次(正版會不會好點)