歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用 Cygwin/mintty 代替 SecureCRT

使用 Cygwin/mintty 代替 SecureCRT

日期:2017/2/28 14:50:18   编辑:Linux教程

cygwin 是 MS-Windows 一個程序,它提供一套 POSIX 虛擬環境,包括但不限於:POSIX C API,shell 及大多數著名命令行程序。

通過各種小工具的自由組合使用,它可以替代 SSH 協議遠程登錄 GUI 工具 SecureCRT 。

原理:

MS-Windows (win) -- 跳板機 (jumper) -- 目標機器 
  • 在踏板機上 啟動 openssh server
  • 在 win 上運行 autossh ,在 win 和 jumper 之間建一個持久的 TCP 連接,實現 SOCKS5 代理
  • 在 win 上使用 openssh 通過 jumper 連接到目標機器

實施步驟

使用 cygwin setup.exe 安裝以下包

net
 - nc
 - openssh
 - ssh

editors
 - vim

以一個名為 bot 的用戶為例,配置 home 目錄

ln -s /cygdrive/c/Users/bot /home/
mkdir -p ~/bin

ssh 客戶端配置 ~/.ssh/config

GSSAPIAuthentication no
ConnectTimeout 5
KeepAlive yes
ServerAliveInterval 60
Compression yes
CompressionLevel 5
ForwardAgent yes

Host from="*.exmaple.com"
  User bot
  Port 22
  ForwardAgent yes
  ProxyCommand /bin/nc -x 127.0.0.1:7070 %h %p

當使用 ssh 連接以 exmaple.com 為域名後綴結束的主機時,它將通過 SOCKS5 代理 127.0.0.1:7070 連接。

配置 bash ~/.bash_profile

...
export PATH=$PATH:$HOME/bin

bash ~/bin/auto-start-ssh-agent.sh
source ~/bin/auto-config-ssh-agent-env.sh

編寫實現 SOCKS5 代理腳本 ~/bin/start-jumper-daemon.sh

#!/usr/bin/env bash
autossh -M20000 -f -C -D 7070 -N -q -A -p 22 跳板機用戶@跳板機IP地址

執行這個腳本會啟動兩個後台進程,一個進程在 win 和跳板機之間創建一個持久 TCP 連接, 另一個監控,如果出錯則自動重連。一般每次開機後執行一次即可。

ssh-agent 配置 ~/bin/auto-start-ssh-agent.sh

#!/usr/bin/env bash

SSH_AUTH_SOCK_DEFAULT=/tmp/ssh-agent.sock

if ps aux | grep ssh-agent > /dev/null; then
  :
else
  rm $SSH_AUTH_SOCK_DEFAULT > /dev/null
  ssh-agent -a $SSH_AUTH_SOCK_DEFAULT
fi

source ~/bin/auto-config-ssh-agent-env.sh
ssh-add -L > /dev/null || ssh-add

ssh-agent 配置 II ~/bin/auto-config-ssh-agent-env.sh

#!/usr/bin/env bash

export SSH_AUTH_SOCK=/tmp/ssh-agent.sock
export SSH_AGENT_PID=`ps aux |grep ssh-agent |awk '{print $1}'`

說明

  • ssh-agent 啟動後,會設置 SSH_AUTH_SOCKSSH_AGENT_PID 兩個環境變量
  • ssh 通過檢測 SSH_AUTH_SOCKSSH_AGENT_PID 兩個環境變量判斷是否存在 ssh-agent 後台進程,如果存在 則使用 ssh-agent 完成自動認證,否則提示用戶輸入密碼
  • ssh-agent 啟動後設置的環境變量僅在 當前 mintty 窗口會話存在,新啟動的窗口不會繼承或者自動檢測
  • auto-config-ssh-agent-env.sh 通過硬編碼 ssh-agent unix domain socket 路徑,實現動態自動設置 環境變量
Copyright © Linux教程網 All Rights Reserved