建立金鑰

Ubuntu 系統網路 ssh 建立金鑰指令

建立 ssh key

ssh-keygen -t rsa -b 4096 -C "kj@example.com"

變更 ssh port

開啟設定檔案

sudo vim /etc/ssh/sshd_config

找尋 Port 並變更

# What ports, IPs and protocols we listen for
Port 22

重新啟動 ssh 服務即可

sudo service ssh restart

是否允許密碼登入

# /etc/ssh/sshd_config
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes

僅允許使用 key 登入

為了安全性,避免主機被使用帳號密碼 try,可以僅使用 key 登入,將密碼 ssh 登入方式關閉

# /etc/ssh/sshd_config
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

在自己電腦產生 key

ssh-keygen -t rsa -b 4096 -C "kj@kejyun.com"
  • id_rsa.pub:公開金鑰(public key),放在 Ubuntu 主機
  • id_rsa:私密金鑰(private key),不可外洩的個人金鑰

將 id_rsa.pub 公開金鑰放在 ~/.ssh/authorized_keys*

~$ mkdir .ssh
~$ cd .ssh
~/.ssh$ vim authorized_keys

重新啟動 ssh 服務

service ssh restart

使用 key 登入

ssh -p <ssh_port> -i /Users/kejyun/.ssh/id_rsa -l <account> <ip_address>
ssh -p 22 -i /Users/kejyun/.ssh/id_rsa -l kj 127.0.0.1

SSH Log

SSH Log 檔案放在 /var/log/auth.log

grep 'sshd' /var/log/auth.log

tail -f /var/log/auth.log

Authentication refused: bad ownership or modes for directory

ssh 登入為了安全性,對於 .ssh 目錄的讀寫權限有限制,需要為 775700

id_rsa.pubauthorized_keys 權限為 644

id_rsa 權限為 600

指定 key 及帳號

在做 ssh 連線 alias 指令時,想要直接接著需要連線的 IP,那麼就必須要把參數先指定好,後面才可以直接接著 IP

ssh -p <port> -i <ssh_key_path> -l <account>
  • -p:port
  • -i:ssh 金鑰路徑
  • -l:帳號名稱
ssh -p 22 -i ~/.ssh/id_rsa -l kejyun

使用 shell function 做 ssh 登入

f() { ssh <account>@$1 -i "<ssh_key_path>"; }; f
f() { ssh kejyun@$1 -i "~/.ssh/id_rsa"; }; f

在本機透過 ssh tunnel 直接連線主機

ssh -t -p <port> -l <account> <ssh_tunnel_server> bash -ic 'ssh_internal_server <ip_address>'
ssh -t -p 22 -l kejyun server.kj.com bash -ic 'ssh_kj 1.1.1.1'

參考資料