前言
本篇為未整理的個人學習紀錄
正文
建立一組公私鑰?
ssh-keygen -t rsa -b 4096 -C "Ray@gmail.com"
如何將指定的 key 加到 ssh-agent?
ssh-add keyFile
當
private_key
的名稱不是預設的id_rsa
時,何解?
將指定的 key 加到ssh-agent
如何打開
ssh-agent
?eval "$(ssh-agent -s)"
在 macOS 上,當我們想要將目前這組
key
刪掉,但是新的key
要沿用相同的檔案名稱,可能會遇到什麼問題?
macOS 的keychain
將舊的 key 記住了,導致怎麼樣都驗不過,驗到人都覺得厭世了承上,何解?
ssh-add -K keyFile
承上,在 GCP 上何解?
ssh-add -D && ssh-add keyFile
GCP 上,如何安裝
ssh client
?apt-get update -y && apt-get install openssh-client -y
如果我已經將
key
加到ssh-agent
, 那我還需要將key
的實體檔案放在.ssh
的資料夾內嗎?
不需要的哦!如何查詢指定 Server 的公鑰?
ssh-keyscan to-be-conneted-instance-ip
# 127.0.0.1 SSH-2.0-OpenSSH_6.6.1 |
取最短的那組即可,例如:
127.0.0.2 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCPWoEQ7iCCYDrpyb5KeMmCaQ8aOnSfehqmrplZRkbqqnkS9++PdSX/eSLJ0tkFd5902/ C+HTCqbDgso4mCKpMo= |
當我們初次從 a 電腦 經由 ssh 連到 b 電腦時,當 a 電腦要將 b 電腦的公鑰加到 known_host 檔案時,會跳出詢問視窗 yes/no, 如何避免掉這個視窗?
ssh -o StrictHostKeyChecking=no
如何在
GitHub
以及Gitlab
上使用不同的key
# GitLab
Host gitlab.com
Preferredauthentications publickey
IdentityFile ~/.ssh/gitlab
# GitHub |
- scp
利用 config 檔案來驗證scp -F SSHconfig sourceFile targetUser@targetIP:targetLocation
如果是要傳資料夾過去
scp -F SSHconfig -r sourceFile targetUser@targetIP:targetLocation |
利用 private key 產生 public key
ssh-keygen -y -f fileName |
把公鑰傳到遠端主機
ssh-copy-id -i key.pub user@IP |
啟動密碼登入
打開 ssh 配置檔
vim /etc/ssh/sshd.config
修改設定如下
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes重啟 ssh
systemctl restart ssh
在 Git 指令中指定 key
"SSH -i /root/.ssh/id_rsa" git clone git@gitlab.com:qcdn/qcdn-aircraft-carrier.git |
SFTP
語法
sftp account@ip |
用法
針對遠方伺服器主機 (Server) 之行為
針對本機 (Client) 之行為 (都加上 l, L 的小寫)
針對資料上傳/下載的行為
SCP
語法
[root@www ~]# scp [-pr] [-l 速率] file [帳號@]主機:目錄名 <==上傳 |
範例
將本機的 /etc/hosts* 全部複製到 127.0.0.1 上面的 student 家目錄內
scp /etc/hosts* student@127.0.0.1:~ |
將 127.0.0.1 這部遠端主機的 /etc/bashrc 複製到本機的 /tmp 底下
scp student@127.0.0.1:/etc/bashrc /tmp |
sshd 設定檔
[root@www ~]# vim /etc/ssh/sshd_config |
安全設定
/etc/ssh/sshd_config
# 1. 先觀察一下所需要的帳號是否存在呢? |
/etc/hosts/allow, /etc/hosts.deny
[root@www ~]# vim /etc/hosts.allow |
iptables 封包過濾防火牆
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow |
設定 ssh 在不同 port 口
新增 port
[root@www ~]# vim /etc/ssh/sshd_config |
自定義 SELinux 規則放行模組
# 1. 於 /var/log/audit/audit.log 找出與 ssh 有關的 AVC 資訊,並轉為本地模組 |
非正規 port 號連接方式
[root@www ~]# ssh -p 23 root@localhost |
Q&A
SSH 的全寫是?
Secure SHell protocolSSH 中, 公鑰的作用?
提供給遠端主機進行資料加密, 也就是說, 每個人都可以有你的公鑰, 用來加密要傳送給你的資料SSH 中, 私鑰的作用?
公鑰用來加密要傳送給你的資料, 而私鑰用來解密這些資料如果有兩台電腦利用 SSH 來互相傳送資料, 共有至少幾把公鑰, 幾把私鑰?
兩把公鑰, 兩把私鑰非對稱式金鑰系統是什麼意思?
伺服器:『具有伺服器的私鑰與用戶端的公鑰』,而用戶端則是: 『具有伺服器的公鑰以及用戶端自己的私鑰』SSH 連線的具體步驟?
- 用戶端對伺服器端發出主動連線要求
- 伺服器端回傳伺服器公鑰
- 用戶端紀錄/比對伺服器公鑰
- 用戶端回傳伺服器用戶端公鑰
- 開始加解密
SSH 中, 當我們接收到對方電腦的公鑰時, 會儲存在哪?
~/.ssh/known_hosts
SSH 中, 自家預設的公鑰會放在哪?
/etc/ssh/ssh_host*
如何產生新的伺服器端的 ssh 公私鑰?
rm /etc/ssh/ssh_host*
/etc/init.d/sshd restart在 sftp 中, 我可以隨意更改 local 或 remote 的資料夾所在位置嗎?
可以哦, 可以參考這裏在 scp 中, 保留原本檔案的權限資料嗎?
可以哦, 可以參考這裏在 ssh 中, 可以開啟多個 port 且都使用在 ssh 上嗎?
可以哦! 請參考sshd 設定檔在 ssh-keygen 中, 如果我沒有特別指令密碼演算法的話, 預設是哪一種?
RSA.ssh 目錄的權限必須要是多少?
700ssh 中, 私鑰的權限必須得是多少?
600ssh 中, 私鑰的擁有者必須得是誰?
該 user 目錄下的擁有者ssh 中, 如果自建 key-pair 卻無法通過驗證, 很有可能是甚麼原因?
sshd 檔案中的 AuthorizedKeysFile 設定沒有打開, 可參考 sshd 設定檔ssh 中, 如果我是透過自建 key 的方式, 那我公鑰應該要放在伺服器端的哪個檔案中?
預設檔名為.ssh/authorized_keys
, 可透過 sshd 設定檔 修改ssh 中, 如果我是透過自建 key 的方式, 預設的伺服器端公鑰放置檔案 authorized_keys 的權限該設定為多少?
644ssh 中, 如果登入失敗, log 可以在哪裡看?
tail /var/log/secure
ssh 中, 可以限制僅有指定的 user 或 group 才可經由 ssh 登入嗎?
可, 可參考 sshd configssh 中, 可以限制僅有指定的 IP 才可經由 ssh 登入嗎?
可, 可參考 hosts.allow & hosts.denyssh 中, 可以透過 iptable 限制指定的 ip 才可經由 ssh 登入嗎?
可, 可參考 iptables.allow & iptables.rulessh 中, 我可以修改預設 port 22 到別的 port 號嗎?
可以, 可參考 ssh port 號變更
留言