在 SSH 中使用 RSA 和 DSA 認證(詳解)
[原貼]http://weblog.kreny.com/archives/2005/10/rsadsa_authenti.html [作者]: kreny
一直想把自己的伺服器的 SSH 認證的模式從使用者名稱 密碼模式 轉換成 RSA 和 DSA 認證協議 ,藉著OpenSSH 4.2的釋出,今天寫了一下配置過程並收集了一些關於 RSA 和 DSA 的參考文章。
思路整理:
一直沒有理解公匙模式下的認證過程,這裡總結一下公匙和秘匙的製作和安置方法。以下假設一臺伺服器Server和一臺PC作為例子。
首先,並不是在伺服器上生成公匙和秘匙。因為很多關於RSA 和 DSA 認證協議的文章都使用Linux伺服器作為道具,自然也就使用諸如
ssh-keygen -t rsa
之類的命令,而使得我總是誤認為要先在Linux伺服器上先生成公匙和秘匙。而真正的安置方法是:
當從PC連線Server的時候,需要在PC上儲存一對公匙和秘匙(這對公匙和秘匙可以用諸如PenguiNet之類的工具生成),而只要把生成的公匙傳到Server上即可。而往往在Server上,公匙是被放在 ~/.ssh/authorized_keys 這個檔案中。這個檔案的設定可以在
/etc/ssh/sshd_config
中找到。
AuthorizedKeysFile .ssh/authorized_keys
那麼當從一個Linux Client Server連線到另外一個Linux Server的時候,我們應該在 Linux Client Server 上生成一對秘匙(RSA時預設為 id_rsa 和 id_rsa.pub),儲存在 ~/.ssh/ 中, 這個設定可以在 /etc/sshd/ssh_config 中設定:
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
RAS/DSA認證安裝過程(以 tenten 使用者為例):
(
以下測試在最新的OpenSSH 4.2 下透過,在 OpenSSH_3.9p1 下測試失敗!
)
[root@domain ~]$su - tenten
[tenten@domain ~]ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tenten/.ssh/id_rsa):[Enter]
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tenten/.ssh/id_rsa.
Your public key has been saved in /home/tenten/.ssh/id_rsa.pub.
The key fingerprint is:
c7:93:83:c4:24:30:56:90:37:a0:eb:a7:5d:4c:8d:ea:1a: tenten@example.com:::或者:::
[tenten@kdx ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/tenten/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tenten/.ssh/id_dsa.
Your public key has been saved in /home/tenten/.ssh/id_dsa.pub.
The key fingerprint is:
a2:be:16:2e:66:e4:69:68:a0:eb:a7:5d:4c:8d:ea:1a:da:54:35:55:32:8e:e2 tenten@example.com
檢視生成的檔案:
[tenten@kdx ~]$ ls /home/tenten/.ssh/ -la
total 28
drwx------ 2 tenten tenten 4096 Oct 11 16:09 .
drwx------ 3 tenten tenten 4096 Oct 9 16:50 ..
-rw------- 1 tenten tenten 736 Oct 11 16:09 id_dsa
-rw-r--r-- 1 tenten tenten 612 Oct 11 16:09 id_dsa.pub
-rw------- 1 tenten tenten 951 Oct 11 16:03 id_rsa
-rw-r--r-- 1 tenten tenten 232 Oct 11 16:03 id_rsa.pub
-rw-r--r-- 1 tenten tenten 667 Oct 9 16:48 known_hosts
設定 sshd_config 檔案,去除密碼認證
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
由於在 sshd_config 檔案裡面,我們設定了以下內容:
#AuthorizedKeysFile .ssh/authorized_keys
所以我們要把共匙重新命名為 autherized_keys
[root@domain .ssh]# mv id_dsa.pub autherized_keys
所以最終伺服器端 ~/.ssh/ 目錄下的內容為(注意authorized_keys的許可權為 644)
[tenten@domain .ssh]$ ls -la
total 12
drwx------ 2 tenten tenten 4096 Oct 11 19:57 .
drwx------ 3 tenten tenten 4096 Oct 11 18:50 ..
-rw-r--r-- 1 tenten tenten 232 Oct 11 19:46 authorized_keys
引申:
在安裝 openssh 的最後,輸入 make install 命令後,會發現最後會生成 public/private key:
Generating public/private rsa1 key pair.
Your identification has been saved in /usr/local/etc/ssh_host_key.
Your public key has been saved in /usr/local/etc/ssh_host_key.pub.
The key fingerprint is:
22:67:00:5f:82:87:ab:22:e7:8e:cd:bb:d2:07:98:57 root@example.comGenerating public/private dsa key pair.
Your identification has been saved in /usr/local/etc/ssh_host_dsa_key.
Your public key has been saved in /usr/local/etc/ssh_host_dsa_key.pub.
The key fingerprint is:
17:6c:d8:6f:31:db:bd:3c:66:81:86:12:13:a4:33:a3 root@example.comGenerating public/private rsa key pair.
Your identification has been saved in /usr/local/etc/ssh_host_rsa_key.
Your public key has been saved in /usr/local/etc/ssh_host_rsa_key.pub.
The key fingerprint is:
27:0e:16:41:f8:96:ed:93:b6:a8:61:74:fe:87:e2:91 root@example.com
/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config
參考文件:
張微波:linux下SSH配合SecureCRT的密匙完美使用方法
Daniel Robbins: 通用執行緒: OpenSSH 金鑰管理,第 1 部分
OpenSSH 的 RSA 和 DSA 認證協議的基礎是一對專門生成的金鑰,分別叫做專用金鑰和公用金鑰。使用這些基於金鑰的認證系統的優勢在於:在許多情況下,有可能不必手工輸入密碼就能建立起安全的連線。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31440090/viewspace-2199372/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringSecurity認證和授權流程詳解SpringGse
- Kerberos認證原理詳解ROS
- Django之使用者認證模組詳解Django
- SpringSecurity認證流程原始碼詳解SpringGse原始碼
- OAuth 2.0 授權認證詳解OAuth
- 詳解SSH 框架中物件呼叫流程框架物件
- 如何在 Linux 中配置基於金鑰認證的 SSHLinux
- 在NET8中使用簡化的 AddJwtBearer 認證JWT
- 新增ssh後,ssh-rsa fatal: Could not read
- 在 Intellij IDEA 中的 Debug 使用詳解IntelliJIdea
- 在VUE中使用RSA加密解密加簽解籤Vue加密解密
- jQuery中的Deferred詳解和使用jQuery
- laravel使用者認證圖解Laravel圖解
- 修復SSH在 MacOS Ventura 系統上不能使用RSA簽名的問題Mac
- git ssh配置詳解Git
- 如何使用ssh_scan遠端驗證SSH服務的配置和策略
- mac 上使用OpenSSL 生成RSA證書Mac
- RSA der加密 p12解密以及配合AES使用詳解加密解密
- jQuery中的Deferred-詳解和使用jQuery
- 怎樣在 Laravel 中處理前端認證Laravel前端
- Django REST framework中認證和許可權的使用方法DjangoRESTFramework
- 在Linux中如何登出其他 SSH 使用者Linux
- 基於 Laravel Auth 實現自定義介面 API 使用者認證詳解LaravelAPI
- 使用OpenSSH證書認證
- Spring Boot 基於 SCRAM 認證整合 Kafka 的詳解Spring BootKafka
- 「Adobe國際認證」關於 Photoshop 圖層詳解
- 在Spring Boot中實現OAuth2.0認證Spring BootOAuth
- 配置ssh-agent免密碼認證入門教程密碼
- Basic認證和Bearer Token認證的區別
- SSH免密登入詳解
- 瞭解JWT認證JWT
- Java身份證實名認證介面解鎖認證新速度Java
- pycharm中安裝和使用sqlite過程詳解PyCharmSQLite
- Oralce 使用SQL中的exists 和not exists 用法詳解SQL
- 圖解Jwt和shiro認證方式的區別圖解JWT
- 關於os認證和口令檔案認證(轉)
- GitHub/GitLab配置SSH Key,以及RSA入門GithubGitlab
- 在Linux中,什麼是SSH,並且如何使用它?Linux