顯示具有 SSH 標籤的文章。 顯示所有文章
顯示具有 SSH 標籤的文章。 顯示所有文章

2026年5月24日 星期日

用SSH tunnel把內部服務轉到本機上使用

上一篇《SSH用ProxyJump過堡壘機連內部伺服器》 就可以直接遠端登入到躲在堡壘機後面的內部伺服器。這篇介紹要如何把躲在堡壘機後面內部伺服器開啟的服務轉到自己的電腦上,流程說明如下:

  • 開一個Ollama服務在內部服務器,預設長在11434 port
  • 堡壘機Bastion上可以透過 http://192.168.11.23:11434存取該服務
  • 本地電腦與堡壘機的資料傳輸則會透過SSH tunnel來加密
  • 在本地電腦用 http://localhost:22434 存取Ollama服務

只要兩個指令就可以完成,再用一個指令驗證:

2026年5月23日 星期六

SSH用ProxyJump過堡壘機連內部伺服器

通常內部伺服器(Server)都不會直接碰到外網,要連線進去會經過堡壘機(Bastion),但這樣就會需要兩個步驟:

  1. 從外網的機器SSH到外部堡壘機Bastion
  2. 再從堡壘機SSH到內部伺服器Server

這樣很麻煩,而且有時候只是要透過SSH叫Server做些事情回傳就好。一個解決方案直接從外網透過SSH ProxyJump,就能夠像是直連到Server了。

2025年8月23日 星期六

Mac用Ed25519創建SSH金鑰並上傳

Mac上面用Ed25519:Edwards-curve Digital Signature Algorithm (EdDSA) ,並選用 SHA-512 (SHA-2) 與 Curve25519,產生256-bits金鑰的指令如下:

  • ssh-keygen -t ed25519 -C "COMMENT" -f KEYNAME

這樣會在~/.ssh/下面產生兩個檔案:

2023年9月15日 星期五

Windows用MobaXterm產生SSH金鑰

在Linux與Mac上可用終端機搭配ssh-keygen指令來產生SSH Key金鑰,在Windows上若是有安裝MobaXterm,則可用其內建的圖形化工具來做,步驟如下:

  1. 點選Tools
  2. 點選MobaKeyGen (SSH Key Generator)



2023年7月28日 星期五

SSH使用的加密種類與推薦的金鑰長度

使用SSH的時候,有下列幾種金鑰可以選用:

  • Ed25519:Edwards-curve Digital Signature Algorithm (EdDSA) ,並選用 SHA-512 (SHA-2) 與 Curve25519,使用256-bits金鑰。安全強度2^128 security target約等同於RSA配3072-bit的金鑰。缺點是很新,舊系統可能無法使用。
  • RSA:Rivest–Shamir–Adleman (RSA),最常使用的公開金鑰演算法,目前建議金鑰長度選4,096 bits。注意現在的SSH用的是RSA version 2,很舊的機器上面才用RSA version 1。

2023年6月9日 星期五

Mac用ssh-keygen生成SSH金鑰對

要在Mac的機器上面使用SSH金鑰登入遠端機器,需要有SSH的金鑰對(private key私鑰與public key公鑰)。預設機器是沒有金鑰的,製作方式如下:

  1. 打開終端機Terminal
  2. 輸入指令ssh-keygen -t rsa -b 4096,輸入後會出現下面的提示訊息
    Enter passphrase (empty for no passphrase)
  3. 上面的的passphrase是私鑰private key的密碼,設定以後優點是若私鑰被盜,還是需要再輸入一次passphrase才能使用,缺點是使用私鑰的時候還是需要輸入密碼。這邊可以直接按enter,那就沒有passphrase可直接使用私鑰。完成後系統產生的金鑰對會有兩個檔案:
    • ~/.ssh/id_rsa:存放private key私鑰,權限是-rw-------
    • ~/.ssh/id_rsa.pub:存放public key公鑰,權限是-rw-r--r--

2019年4月11日 星期四

反向SSH連線搭配X視窗

標題很拗口,其實就是reverse SSH tunnel with X11 forwarding。遠端的機器放在防火牆下且沒有公開的IP,故無法使用ssh直接連線來控制遠端機器。解決方案就是先讓遠端的機器事先用reverse ssh連線到一台控制用的機器上面並保持連線,需要登入遠端的機器的時候,就先登入到控制用的機器上,然後再用reverse SSH連回到遠端的機器。假設控制用機器的IP address與使用者帳號如下:  
  •  ADDR=控制用機器的公開IP address
  •  USER=控制用機器上面的帳號

事先在遠端的機器開啟終端機輸入:
  • ssh -fNR 55555:localhost:22 ${USER}@${ADDR}
這個指令會開啟控制用機器的port 55555,反向連線到遠端機器的port 22(一般來說都是SSH service,如果開在port 8964的話,那就要另外設定成8964)。這樣就完成遠端的機器與控制用機器中間的SSH通道。完成之後,再從控制用機器開啟終端機輸入:
  • ssh localhost -p 55555
輸入遠端帳號的密碼,才能夠透過SSH通道反向連線到遠端的機器。

2019年2月22日 星期五

Windows 10透過SSH掛載遠端資料夾

想要掛載遠端主機的資料夾,除了遠端主機架設Samba讓客戶端可以直接用網路芳鄰來掛載資夾,另外一種方式則是使用sshfs。此法遠端主機只要有架設SSH服務即可。在Windows系統中此方法可以用Dokan + sshfs for Windows來達成:
  • Dokan:通稱fuse for Windows,用來弄出一個虛擬硬碟
  • WinSSHFS:Windows版本的sshfs,使用SSH與遠端機器連線,將遠端的資料夾掛載到本地端的虛擬硬碟上面

2019年2月21日 星期四

SSH config設定登入主機與帳號

有台想要遠端登入的主機:
  • IP:192.168.77.88
  • 登入帳號:ooo
一般的登入方式是輸入下面的指令:
  • ssh ooo@192.168.77.88

2019年2月20日 星期三

不只是終端機的MobaXterm

Windows上面的終端機使用的是Windows本身的指令,沒有辦法使用UNIX-like系統上的指令像是grep, sed, awk...等。MobaXterm這個終端機免費版提供下面的功能:
  • 多視窗終端機:可執行UNIX-like的指令與Bash Shell script
  • X Server:可以把遠端X Windows的圖形介面接回來使用
  • SSH客戶端:可以使用ssh加密連線到遠端伺服器
    • 遠端連線後,會有sftp可以上傳與下載檔案
    • 搭配X11 forwording可以把遠端的圖形介面顯示在本地端
  • 網路工具組:
    • 列出目前機器上面開的port
    • 掃描某個網段上面的機器
    • 掃描某台機器上面所有的port
    • 抓取網路上面的封包
MobaXterm就像是裝在Windows上面的一個小的虛擬UNIX-like系統,但是可以直接操作Windows上面的檔案

2019年1月28日 星期一

Pietty與Putty無法連線

Pietty或Putty用SSH連線出現了下面的Fatal Error錯誤:
expected key exchange group packet from server

2018年6月22日 星期五

設定SSH client不用密碼、只用金鑰登入

在使用SSH在遠端機器執行指令,若是不想要用密碼,可以選用金鑰。強迫SSH client關閉密碼而只用金鑰登入執行職令,那要用到下面的參數:
  • ssh -o PasswordAuthentication=no RemoteIP Command
這樣就可以強迫SSH client不用密碼、只用金鑰登入遠端主機執行Command指令

參考資料

_EOF_

2018年6月12日 星期二

用rsync同步本地與遠端的資料夾

要備份本機端資料夾到遠端機器,參考《用rsync過ssh tunnel來備份》。這件事情可以想像成把本機端的資料給推(push)到遠端的機器。

若要將本機端某資料夾與遠端機器的資料夾同步,那麼除了把本機的資料推(push)到遠端以外,還要將遠端的資料給拉(pull)回本機端,指令如下:
  1. LocalDir=/home/localUser/localDir/  注意最後面有斜線
  2. RemoteIP=遠端機器的IP位址
  3. RemoteUser=遠端機器的使用者名稱
  4. RemoteDir=/home/remoteUser/remoteDir/ 注意最後面有斜線
  5. rsync -Cavuhtz -e ssh ${LocalDir} ${RemoteUser}@${RemoteIP}:${RemoteDir}
  6. rsync -Cavuhtz -e ssh ${RemoteUser}@${RemoteIP}:${RemoteDir} ${LocalDir}

2018年6月4日 星期一

用rsync過ssh tunnel來備份

要遠端備份一個資料夾,且一段時間後只更新更動過的檔案,可以使用rsync並透過ssh讓資料傳輸個過程中被加密。假設備份是從本地端(local)到遠端(remote)指令如下:
  1. RemoteIP=遠端的IP位址
  2. RemoteUser=遠端的使用者名稱
  3. RemoteDir=/home/remoteUser/Remote/  (遠端放置備份的資料夾)
  4. LocalDir=/home/localUser/Local/ (本地端要備份的資料夾)
  5. rsync -Cavuhtz -e "ssh -p 8964" ${LocalDir} ${RemoteUser}@${RemoteIP}:${RemoteDir}
第五個指令意思是把本地端的資料夾${LocalDir},在遠端透過使用者${RemoteUser}經由IP位址${RemoteIP}登入後,放置到遠端的資料夾${RemoteDir}中。
簡單說就是把/home/localUser/Local備份到/home/remoteUser/Remote,上面第3和第4個指令在指定資料夾的時候,最後面會放入斜線

2018年3月29日 星期四

用iptables做port redirection

要讓內網的機器可以透過對外部的機器從外面直接連線,例如說SSH
  • 外部的機器IP位址:publicIP
  • 內部的機器IP位址:privateIP
這時候希望透過下面的指令,直接連線到內部機器:
  • ssh -p 9487 username@publicIP

2018年1月25日 星期四

限制root從某些IP才能用ssh登入

限制使用者用ssh從某些IP最簡單的方式為TCP wrapper(修改/etc/hosts.allow),但若只是要限制root從某些IP才能夠登入,就無法使用TCP wrapper的方式

要達成此目的,只要設定 /etc/ssh/sshd_config 成下方的樣子:
PermitRootLogin no
Match Address 140.112.1.1,140.113.1.*,140.114.*.*
    PermitRootLogin yes

2017年8月10日 星期四

讓SSH僅允許用金鑰登入

用ssh登入遠端主機有兩種方式:
  1. 輸入帳號密碼,參考《SSH遠端連線,接視窗回本機使用》
  2. 帳號配合金鑰,參考《SSH遠端登入不用密碼》
第1種方式會遇到不安好心的人士測試帳號密碼,所以對於比較重要的帳號,可以關閉第1種登入的方式,只允許用第2種方式也就是金鑰登入。關閉的方式是設定/etc/ssh/sshd_config,在檔案的最後面加入:
Match User user1,user2,user3
    PasswordAuthentication no

2017年8月1日 星期二

將sshd開在許多個port上面

加密連線服務sshd預設是開在port 22上面,若想要開在其他的port上面,並且把port 22給關掉,修改/etc/ssh/sshd_config開頭是Port的那幾行,如下:
Port 11111
Port 22222
Port 33333
Port 44444
然後重新啟動sshd的服務:
  • sudo service ssh restart
這樣sshd就會在11111, 22222, 33333, 44444, 55555這五個port工作了~

2017年7月13日 星期四

Mac的ssh -X無法順利接視窗回來

在使用SSH連線遠端機器,將遠端機器的視窗接回本機使用的時候,原本可以用ssh -X USER@REMOTE的指令,最近變成只能夠用ssh -Y USER@REMOTE的時候才能夠將遠端的視窗接回本機使用,操作手冊上對於此兩個參數的的說明是:
  • -X:Enables X11 forwarding. 遠端機器是不可信(untrusted)的X11 client。因為是不可信的X11 client,所以會套用一些安全性政策,某些有安全性考量的操作會被禁止,也就是相對-Y來說-X要安全一點
  • -Y:Enables trusted X11 forwarding. 遠端機器是可信的X11 client,意思就是相信遠端機器管理者是可信任的,但這可能有安全問題,因為遠端機器可以從X11 client竊取數據:像是截圖、鍵盤記錄(keyboard monitoring)等

2017年7月11日 星期二

sshfs:在Mac上透過ssh掛載遠端資料夾

要安全的存取遠端機器的內容,可以透過sftp 也就是FTP over SSH,但這樣每次都要開啟有sftp的軟體才能夠去存取。另外的解決方案就是sshfs,也就是透過ssh加密來掛載遠端機器的資料夾到本機上~
在Mac上,可以用sshfs這個指令,安裝方式有兩種:
  1. 到FUSE for macOS去抓SSHFS套件直接安裝
  2. 用MacPorts一個指令直接安裝
第一種方式就是抓了pkg檔案回來點兩下,參考GTW的說明
第二種方式則是用MacPorts指令 sudo port install sshfs