首頁 > 軟體

Linux-SFTP/SSH免密碼登入

2020-06-16 17:29:12

概述

Public Key認證的主要魅力在於認證時承諾不必提供密碼就能夠同遠端系統建立連線。

Public Key認證的基礎在於一對金鑰,public key和private key,public key對資料進行加密而且只能用於加密,private key 只能對所匹配的public key加密過的資料進行解密。

我們把public key放在遠端系統合適的位置,然後從本地開始進行ssh連線。

此時,遠端的sshd會產生一個亂數並用我們產生的public key進行加密後發給本地,本地會用private key進行解密並把這個亂數發回給遠端系統。

最後,遠端系統的sshd會得出結論我們擁有匹配的private key允許我們登入。

SFTP免密碼登入操作方法

1) 登陸伺服器端主機,在當前使用者根目錄執行(以RSA演算法為例)

如下命令:

ssh-keygen –t rsa

螢幕顯示內容均可直接以回車使用預設項,此時在$home/.ssh目錄下生成I d_rsa私鑰(private key)及id_rsa.pub公鑰(public key)兩個檔案。

2) 將伺服器端的$home/.ssh/id_rsa.pub檔案上傳到用戶端機的$home/.ssh目錄下

通過scp命令傳到 用戶端

scp  $home/.ssh/id_rsa.pub username@client_ip:$home/.ssh

在用戶端機$home/.ssh目錄下執行命令:

cat id_rsa.pub >> authorized_keys

3)將用戶端各主機資訊新增到$home/.ssh/known_hosts檔案中

例如:
伺服器端IP是10.45.7.154
用戶端為:10.45.7.61

在伺服器端執行 sftp usename@10.45.7.61命令提示如下:

qdgcp@mdw:~/.ssh> sftp qmdb@10.45.7.61
Connecting to 10.45.7.61...
The authenticity of host '10.45.7.61 (10.45.7.61)' can't be established.
RSA key fingerprint is ea:53:c8:cf:24:31:18:d8:47:68:8d:18:65:a4:e8:20.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.45.7.61' (RSA) to the list of known hosts.

這樣,在伺服器端的$home/.ssh/目錄會出現一個known_hosts檔案,用戶端主機資訊將新增到這個檔案中。

按上述方法實現伺服器端主機和用戶端主機間的公私鑰配對後,從伺服器端主機向用戶端主機就可以實現同一使用者名稱的sftp自動安全登陸操作了。


注意:
如果我在伺服器端使用root使用者登入,並且執行了

 sftp Oracle@10.45.7.61 
 或者
 ssh  oracle@10.45.7.61

這個時候 在A上執行 ssh oracle@10.45.7.61是可以自動登入的,
但是如果 僅僅 ssh 10.45.7.61 ,這個時候linux會自動獲取當前登入使用者,並賦予到 這個命令上,此時會變成 當前使用者@10.45.7.61 ,但由於我們在root使用者下執行的免密碼登入,這個時候變成了oracle使用者,雖然也是 ssh oracle@10.45.7.61,但是使用者變了,所以同樣的也不能自動登入。 如下圖所示

退出ssh的話 輸入 logout即可 ,如果退出sftp ,輸入exit命令即可。

說明:

在設定ssh自動傳輸的時候注意,

  • .ssh目錄的屬主、屬組使用當前使用者與使用者組,
  • .ssh目錄的許可權請保持700,
  • authorized_keys的許可權為644,
  • id_rsa的許可權為600,
  • id_rsa.pub的許可權為644,
  • 同時檢查使用者$HOME目錄許可權必須為755。

確認許可權 。
r 4 w 2 x 1
chmod 644 dir 通過chmod 賦許可權。

實操

以下操作的是同一台主機, 一般都用於兩台主機之間。

[root@entel2 ~]# cd $HOME
[root@entel2 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
79:e6:c1:13:7d:05:39:8a:c8:e8:84:9f:8e:c6:0e:0f root@entel2
The key's randomart image is:
+--[ RSA 2048]----+
|              .o.|
|           .  o. |
|     . o ....... |
|    . o oo....   |
|     + .S *      |
|      +  + o     |
|  E. o    .      |
|   ++ .          |
|   oo            |
+-----------------+
[root@entel2 ~]# cd .ssh/
[root@entel2 .ssh]# ll
total 24
-rw------- 1 root root  1671 Nov  3 14:05 id_rsa
-rw-r--r-- 1 root root   393 Nov  3 14:05 id_rsa.pub


[root@entel2 .ssh]# cat id_rsa.pub >>authorized_keys

[root@entel2 .ssh]# ll
total 28
-rw-r--r-- 1 root root   393 Nov  3 14:08 authorized_keys
-rw------- 1 root root  1671 Nov  3 14:05 id_rsa
-rw-r--r-- 1 root root   393 Nov  3 14:05 id_rsa.pub


[root@entel2 .ssh]# sftp root@10.45.7.198
Connecting to 10.45.7.198...
The authenticity of host '10.45.7.198 (10.45.7.198)' can't be established.
RSA key fingerprint is 5f:b5:f8:02:5a:b0:ad:6b:10:ce:6a:cc:53:55:68:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.45.7.198' (RSA) to the list of known hosts.
sftp> exit


檢視目錄 出現了 known_hosts
[root@entel2 .ssh]# ll
total 32
-rw-r--r-- 1 root root   393 Nov  3 14:08 authorized_keys
-rw------- 1 root root  1671 Nov  3 14:05 id_rsa
-rw-r--r-- 1 root root   393 Nov  3 14:05 id_rsa.pub
-rw-r--r-- 1 root root   393 Nov  3 14:09 known_hosts


[root@entel2 .ssh]# cat known_hosts
10.45.7.198 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1WCBN8XDrGX2Ersub6U8CDtY2a0Ug5YT9fvqTcJm+DCQVj/DZVyvc5ODBC03iDp54ugSOToFluo1RabJjrTEZGMWjYKCZzEXRYO3sq4waGIP1D27bYLs9GW23VZUP0qwpmPKuJs8Asx7S1m9knoQO+wIeyQQt0gkw3TKM4QJSPAsfqSl0XuSTOczS9kbNTGOCpYoB7kThsE8Q87OqRLfjR2ePN3bDTL6RKX8iDm2PelQ2g+oAQCCmWlUF11TYwBahN0bKY7rNPsEQWlYpk0QGdNVTwMGy1j2DrlzoLSyuLfMu5+NgPVgx9MKmLfQlPVdFQyb/n5NShGxG+VAPA+6CQ==



[root@entel2 .ssh]# ssh root@10.45.7.198
Last login: Thu Nov  3 14:06:17 2016 from 10.45.22.168



[root@entel2 ~]# sftp root@10.45.7.198
Connecting to 10.45.7.198...

下面關於SSH相關的文章您也可能喜歡,不妨參考下:

Ubuntu 14.04 LTS下設定SSH免密碼登入 http://www.linuxidc.com/Linux/2016-09/135404.htm

Ubuntu 14.04 下安裝Samba 及SSH 伺服器端的方法 http://www.linuxidc.com/Linux/2015-01/111971.htm

CentOS 6.5之SSH免密碼登入設定 http://www.linuxidc.com/Linux/2016-10/136200.htm

提高Ubuntu的SSH登陸認證速度的辦法 http://www.linuxidc.com/Linux/2014-09/106810.htm

開啟SSH服務讓Android手機遠端存取 Ubuntu 14.04  http://www.linuxidc.com/Linux/2014-09/106809.htm

如何為Linux系統中的SSH新增雙重認證 http://www.linuxidc.com/Linux/2014-08/105998.htm

在 Linux 中為非 SSH 使用者設定 SFTP 環境 http://www.linuxidc.com/Linux/2014-08/105865.htm

Linux 上SSH 服務的設定和管理 http://www.linuxidc.com/Linux/2014-06/103627.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-11/136849.htm


IT145.com E-mail:sddin#qq.com