iT邦幫忙

2022 iThome 鐵人賽

DAY 1
1

前情提要,第一次來挑戰☺️,前幾天來暖暖身,分享不管公司用什麼工具,都會來跟你要的ssh key!! 如果可以靈活運用ssh tunnel 在家連不上公司內部IP的時候....又有東西要改時,就能派上用場啦~
一般來說,公司會很多的伺服器放不同的軟體服務,舉例A台機器放DB,B台機器專放備份檔案,C台機器才放程式等等,以流程來說,管理者會先要你的ssh key公鑰,加入該伺服器的白名單中,這時你要遠端進入該伺服器就可以直接利用手中的私鑰去對應該台伺服器名單中的公鑰,不用輸入密碼,即可登進去該伺服器中。

ssh 設定

  • 產生ssh key
    ssh-keygen -f ~/.ssh/{檔名} -t rsa -b 4096 -C "{信箱}"
  • 把私鑰加入設定
    ssh-add ~/.ssh/{檔名}
  • 確認私鑰加入設定
    ssh-add -l
    ssh-add -L
  • 打開公鑰給別人
    cat ~/.ssh/{檔名}.pub
  • 連線
    ssh username@xxx.xxx.xxx.xxx

啊不過每次都要打IP 實在很麻煩,可以設定在ssh的config中就不用一直打IP囉!
先進去ssh資料夾中,他是隱藏檔,mac的朋友記得先按"command + shift + .(dot)",會出現淺灰色的資料夾,或是直接用終端機進去,路徑為/Users/{用戶名稱}/.ssh/config

\\ 主機名稱
Host remote_A
   \\IP
   HostName  172.xx.xx.xxx
   \\帳號
   User     username
   \\用哪一把私鑰
   IdentityFile ~/.ssh/test_key

此時,你就可以直接用Host名稱來進入遠端主機中~
ssh remote_A

SSH Tunnel

好啦,進入一台機器很簡單,那如果想透過A台機器進去B台機器呢??
情境題,有些機器只有內部IP才能進入,這時就需要先進一台機器是在該網域底下(圖中為A主機),利用A主機跳過去需要內部IP才能進去的機器(圖中的B主機或是C主機),請參考下圖

  • 示意圖

這裡有三個角色

  • Client
    • 圖中就是我的主機,可以利用ssh 指令進行Port Forwarding
  • SSH Server
    • 圖中就是A主機,我的主機可以透過ssh 先連進去
  • Target Server
    • 圖中可以是B主機或是C主機 ,任何需要透過內部才能連到的機器都可以,就是你想連線進去的機器

⭐️要訣是 我的主機出去的port(這邊隨便開一個沒被佔用的port 舉例為port:9999) 對應 圖中B主機開出來的對外port(遠端桌面通常為port:3389) 中間通過A主機的ssh 連線通常為 default port 22(圖中是2233,看管理者如何設定)

ssh {A主機} -p {port} -i {key} -L 9999:xxx.xxx.xxx.123:3389

但每次都打這麼長一串實在不方便...這時候config就派上用場

// 代稱
Host ThroughAToB
   // 先去 A主機
   HostName  xxx.xxx.xxx.170
   // A 主機用戶名稱
   User      clai
   // A 主機的通路port
   port      2233
   // 哪把私鑰
   IdentityFile ~/.ssh/key
   // port 9999 為本機開的port 用來連接 B機器的入口
   // xxx.xxx.xxx.123 為B機器的IP 
   // :3389 是對應B機器出來的port
   LocalForward 9999 xxx.xxx.xxx.123:3389

這時候只要打ssh ThroughAToB 就完成了~

此時終端機是進去A主機喔!!!
?要進入B機器的終端機要打開另外一個終端機,進去本機開的9999(現在已經連線B主機)
ssh username@localhost -p 9999

或是透過其他第三方軟體進去喔~
舉例1. remote desktop

舉例2. mongodb

那本機的狀態呢? 去查看本機開出的port 狀態
lsof -iTCP:9999
這邊就可以看到

ps. 關機ssh agent 這邊存的key會掉喔,需要重新加入,建議寫在開機排程,ssh-agent是以後使用這個金鑰就不需要再輸入密碼
參考連結:
ssh tunnel


下一篇
[Day2] Linux 常用的lsof
系列文
剛入職軟體工程師會需要知道的常見工具篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言