1. 程式人生 > >linux下允許root使用者遠端登入並建立ssh信任的方法

linux下允許root使用者遠端登入並建立ssh信任的方法

1允許root遠端登入

啟用root使用者:sudo passwd root      //修改密碼後就啟用了。 

安裝OpenSSH server:
1. 使用apt命令安裝openssh server
$ sudo apt-get install openssh-server

vi /etc/ssh/sshd_config

將這一行前面的#去掉

#PermitRootLogin yes

重啟服務

/etc/rc.d/init.d/sshd restart 

service ssh restart

生成祕鑰

$ ssh-keygen -t rsa

將祕鑰上傳到客戶端

ssh-copy-id [email protected]

_address

更改配置

nano/etc/ssh/sshd_config

去掉AuthoriedKeysFile前面的註釋

2建立ssh信任關係

網上關於建立Linux信任關係(ssh trust)的中文文章有一些,但是寫得都不太詳細,這裡彙總了方方面面的資料,把多機信任關係建立方法說說清楚

一 建立信任關係的基本操作

基本場景是想從一臺Server伺服器直接登入另一臺,或者將Server伺服器的資料不需密碼驗證直接拷貝至Client伺服器,以下我們簡稱Server伺服器為S(待發送的資料檔案在這臺伺服器上),Client服務為C,信任關係的最簡單操作方法如下:

1 在S伺服器上,進入當前使用者根目錄下的隱藏目錄 .ssh,命令如下:
cd ~/.ssh
(注:目錄名前的點好”.”表示該資料夾是一個特殊的隱藏資料夾,ls命令下預設是看不到的,通過 ls –a 命令觀察到)
2 生成S伺服器的私鑰和公鑰:
ssh-keygen -t rsa
(注:rsa是一種加密演算法的名稱,此處也可以使用dsa,關於rsa和dsa演算法的介紹可見本文後半章節)

ssh-keygen生成金鑰用於信任關係生成
-此時會顯示Generating public/private key pair. 並提示生成的公鑰私鑰檔案的存放路徑和檔名,預設是放在 /home/username/.ssh/id_rsa 這樣的檔案裡的,通常不用改,回車就可以
然後Enter passphrase(empty for no passphrase): 通常直接回車,預設不需要口令
Enter same passphrase again: 也直接回車
然後會顯式金鑰fingerprint生成好的提示,並給出一個RSA加密協議的方框圖形。此時在.ssh目錄下ls,就可以看到生成好的私鑰檔案id_rsa和公鑰檔案id_rsa.pub了
以下是各種補充說明:
注1:如果此時提示 id_rsaalready exists,Overwrite(y/n) 則說明之前已經有人建好了金鑰,此時選擇n 忽略本次操作就行,可以直接用之前生成好的檔案;當然選y覆蓋一下也無妨
注2:公鑰用於加密,它是向所有人公開的(pub是公開的單詞public的縮寫);私鑰用於解密,只有密文的接收者持有。
3 在Server伺服器上載入私鑰檔案
仍然在.ssh目錄下,執行命令:
ssh-add id_rsa

系統如果提示:Identity added: id_rsa (id_rsa) 就表明載入成功了下面有幾個異常情況處理:
–如果系統提示:could not open a connection to yourauthentication agent

則需要執行一下命令:

ssh-agent bash

然後再執行上述的ssh-add id_rsa命令

–如果系統提示id_rsa: No such file or directory

這是系統無法找到私鑰檔案id_rsa,需要看看當前路徑是不是不在.ssh目錄,或者私鑰檔案改了名字,例如如果建立的時候改成 aa_rsa,則這邊命令中也需要相應改一下

-如果系統提示 command not found,那肯定是你命令敲錯字元了J

-提示Agent admitted failure to sign using the key,私鑰沒有載入成功,重試ssh-add

-注意id_rsa/id_rsa.pub檔案不要刪除,存放在.ssh目錄下

4 把公鑰拷貝至Client伺服器上

很簡單,例如 scp id_rsa.pub

[email protected]:~

5 ssh登入到Client伺服器上,然後在Client伺服器上,把公鑰的內容追加到authorized_keys檔案末尾(這個檔案也在隱藏資料夾.ssh下,沒有的話可以建立,沒有關係)

cat id_rsa.pub >> ~/.ssh/authorized_keys

以下是各種補充說明,遇到問題時可以參考:

注1:這裡不推薦用檔案覆蓋的方式,有些教程直接scpid_rsa.pub 到Client伺服器的authorized_keys檔案,會導致之前建的其他信任關係的資料被破壞,追加到末尾是更穩妥的方式;

注2: cat 完以後,Client伺服器上剛才拷貝過來的id_rsa.pub檔案就不需要了,可以刪除或移動到其它地方)

注3:ssh-keygen 命令通過-b引數可以指定生成的金鑰檔案的長度,如果不指定則預設為1024,如果ssh-keygen –b 4096(最長4096),則加密程度提高,但是生成和驗證時間會增加。對一般的應用來說,預設長度已經足夠勝任了。如果是rsa加密方式,那麼最短長度為768 byte

注4:authorized_keys檔案的許可權問題。如果按上述步驟建立關係後,仍然要驗證密碼,並且沒有其他報錯,那麼需要檢查一下authorized_keys檔案的許可權,需要作下修改: chmod g-wauthorized_keys

OK,現在試試在Server端拷貝一個檔案到Client伺服器,應該無需互動直接就傳過去了。

但是此時從Client傳資料到Server伺服器,仍然是需要密碼驗證的。如果需要兩臺伺服器間能直接互傳資料,則反過來按上述步驟操作一下就可以了

二 刪除伺服器間信任關係的方法

如果想取消兩臺伺服器之間的信任關係,直接刪除公鑰或私鑰是沒有用的,需要在Client伺服器上,開啟 ~/.ssh/ authorized_keys 檔案,找到對應的伺服器的公鑰欄位並刪除

每個段落的開頭是ssh-rsa字樣,段尾是Server伺服器的帳號和ip(如下圖紅框),需要細心的找一下後刪除整段

金鑰檔案內容和刪除Linux伺服器間信任關係的方法

三 各種可能遇到的情況和處理方法

–提示 port 22: Connection refused

可能的原因:沒有正確安裝最新的openssh-server,安裝方法如下

sudo apt-get install openssh-server

不支援apt安裝的,可以手工下載:

wget ftp.ssh.com/pub/ssh/ssh-3.2.9.1.tar.gz

–關於目錄和檔案的許可權設定

.ssh目錄的許可權必須是700,同時本機的私鑰的許可權必須設定成600:

chmod 600 id_rsa

否則ssh伺服器會拒絕登入

四 關於RSA和DSA加密演算法

在ssh-keygen命令中,-t引數後指定的是加密演算法,可以選擇rsa或者dsa

RSA 取名自演算法的三位提出者Ron Rivest, Adi Shamir, and LeonardAdleman的姓名首字母,作為一種非對稱加密演算法,RSA的安全性基於及其困難的大整數分解(兩個素數的乘積的還原問題)。關於RSA演算法原理的文章很多,感興趣的朋友可以找來讀一讀。

DSA = Digital Signature Algorithm,基於有限域離散對數難題,是Schnorr和ElGamal簽名演算法的變種,一般用於數字簽名和認證,被美國標準局(NIST)採納為數字簽名標準DSS(Digital Signature Standard),based on discrete logarithms computation.

DES = Digital Encryption Standard. Obsolete standard.

RSA演算法好在網路容易實現金鑰管理,便進行數字簽名,演算法複雜,加/解速度慢,採用非對稱加密。在實際用於信任關係建立中,這兩種方法的差異很微小,可以挑選其一使用。

五 關於SSH協議的介紹

SSH全稱Secure SHell,顧名思義就是非常安全的shell的意思,SSH協議是IETF(InternetEngineering Task Force)的Network Working Group所制定的一種協議。SSH的主要目的是用來取代傳統的telnet和R系列命令(rlogin,rsh,rexec等)遠端登陸和遠端執行命令的工具,實現對遠端登陸和遠端執行命令加密。防止由於網路監聽而出現的密碼洩漏,對系統構成威脅。

ssh協議目前有SSH1和SSH2,SSH2協議相容SSH1。目前實現SSH1和SSH2協議的主要軟體有OpenSSH和SSHCommunications Security Corporation 公司的SSHCommunications 軟體。前者是OpenBSD組織開發的一款免費的SSH軟體,後者是商業軟體,因此在linux、FreeBSD、OpenBSD、NetBSD等免費類UNIX系統種,通暢都使用OpenSSH作為SSH協議的實現軟體。因此,本文重點介紹一下OpenSSH的使用。需要注意的是OpenSSH和SSH Communications的登陸公鑰/私鑰的格式是不同的,如果想用SSH Communications產生的私鑰/公鑰對來登入到使用OpenSSH的linux系統需要對公鑰/私鑰進行格式轉換。

第一次登陸後,ssh就會把登陸的ssh指紋存放在使用者home目錄的.ssh目錄的know_hosts檔案中,如果遠端系統重灌過系統,ssh指紋已經改變,你需要把 .ssh 目錄下的know_hosts中的相應指紋刪除,再登陸回答yes,方可登陸。請注意.ssh目錄是開頭是”.”的隱藏目錄,需要ls –a引數才能看到。而且這個目錄的許可權必須是700,並且使用者的home目錄也不能給其他使用者寫許可權,否則ssh伺服器會拒絕登陸。如果發生不能登陸的問題,請察看伺服器上的日誌檔案/var/log/secure。通常能很快找到不能登陸的原因。

六 關於ssh_config和sshd_config檔案配置的說明

/etc/ssh/ssh_config:

Host *

選項“Host”只對能夠匹配後面字串的計算機有效。“*”表示所有的計算機。

ForwardAgent no

“ForwardAgent”設定連線是否經過驗證代理(如果存在)轉發給遠端計算機。

ForwardX11 no

“ForwardX11”設定X11連線是否被自動重定向到安全的通道和顯示集(DISPLAY set)。

RhostsAuthentication no

“RhostsAuthentication”設定是否使用基於rhosts的安全驗證。

RhostsRSAAuthentication no

“RhostsRSAAuthentication”設定是否使用用RSA演算法的基於rhosts的安全驗證。

RSAAuthentication yes

“RSAAuthentication”設定是否使用RSA演算法進行安全驗證。

PasswordAuthentication yes

“PasswordAuthentication”設定是否使用口令驗證。

FallBackToRsh no

“FallBackToRsh”設定如果用ssh連接出現錯誤是否自動使用rsh。

UseRsh no

“UseRsh”設定是否在這臺計算機上使用“rlogin/rsh”。

BatchMode no

“BatchMode”如果設為“yes”,passphrase/password(互動式輸入口令)的提示將被禁止。當不能互動式輸入口令的時候,這個選項對指令碼檔案和批處理任務十分有用。

CheckHostIP yes

“CheckHostIP”設定ssh是否檢視連線到伺服器的主機的IP地址以防止DNS欺騙。建議設定為“yes”。

StrictHostKeyChecking no
“StrictHostKeyChecking”如果設定成“yes”,ssh就不會自動把計算機的密匙加入“$HOME/.ssh/known_hosts”檔案,並且一旦計算機的密匙發生了變化,就拒絕連線。

IdentityFile ~/.ssh/identity

“IdentityFile”設定從哪個檔案讀取使用者的RSA安全驗證標識。

Port 22

“Port”設定連線到遠端主機的埠。

Cipher blowfish

“Cipher”設定加密用的密碼。

EscapeChar ~

“EscapeChar”設定escape字元。

/etc/ssh/sshd_config:

Port 22

“Port”設定sshd監聽的埠號。

ListenAddress 192.168.1.1

“ListenAddress”設定sshd伺服器繫結的IP地址。

HostKey /etc/ssh/ssh_host_key

“HostKey”設定包含計算機私人密匙的檔案。

ServerKeyBits 1024

“ServerKeyBits”定義伺服器密匙的位數。

LoginGraceTime 600

“LoginGraceTime”設定如果使用者不能成功登入,在切斷連線之前伺服器需要等待的時間(以秒為單位)。

KeyRegenerationInterval 3600

“KeyRegenerationInterval”設定在多少秒之後自動重新生成伺服器的密匙(如果使用密匙)。重新生成密匙是為了防止用盜用的密匙解密被截獲的資訊。

PermitRootLogin no

“PermitRootLogin”設定root能不能用ssh登入。這個選項一定不要設成“yes”。

IgnoreRhosts yes

“IgnoreRhosts”設定驗證的時候是否使用“rhosts”和“shosts”檔案。

IgnoreUserKnownHosts yes

“IgnoreUserKnownHosts”設定sshdaemon是否在進行RhostsRSAAuthentication安全驗證的時候忽略使用者的“$HOME/.ssh/known_hosts”

StrictModes yes

“StrictModes”設定ssh在接收登入請求之前是否檢查使用者家目錄和rhosts檔案的許可權和所有權。這通常是必要的,因為新手經常會把自己的目錄和檔案設成任何人都有寫許可權。

X11Forwarding no

“X11Forwarding”設定是否允許X11轉發。

PrintMotd yes

“PrintMotd”設定sshd是否在使用者登入的時候顯示“/etc/motd”中的資訊。

SyslogFacility AUTH

“SyslogFacility”設定在記錄來自sshd的訊息的時候,是否給出“facility code”。

LogLevel INFO

“LogLevel”設定記錄sshd日誌訊息的層次。INFO是一個好的選擇。檢視sshd的man幫助頁,已獲取更多的資訊。

RhostsAuthentication no

“RhostsAuthentication”設定只用rhosts或“/etc/hosts.equiv”進行安全驗證是否已經足夠了。

RhostsRSAAuthentication no

“RhostsRSA”設定是否允許用rhosts或“/etc/hosts.equiv”加上RSA進行安全驗證。

RSAAuthentication yes

“RSAAuthentication”設定是否允許只有RSA安全驗證。

PasswordAuthentication yes

“PasswordAuthentication”設定是否允許口令驗證。

PermitEmptyPasswords no

“PermitEmptyPasswords”設定是否允許用口令為空的帳號登入。

AllowUsers admin

“AllowUsers”的後面可以跟著任意的數量的使用者名稱的匹配串(patterns)或
[email protected]
這樣的匹配串,這些字串用空格隔開。主機名可以是DNS名或IP地址。


相關推薦

linux允許root使用者遠端登入建立ssh信任方法

1允許root遠端登入 啟用root使用者:sudo passwd root      //修改密碼後就啟用了。  安裝OpenSSH server: 1. 使用apt命令安裝openssh server $ sudo apt-get install openssh-se

linux開啟SSH,並且允許root使用者遠端登入,允許無密碼登入

參考:http://blog.csdn.net/jia0511/article/details/8237698 1. 允許root使用者遠端登入 修改ssh服務配置檔案 sudo vi /etc/ssh/sshd_config 調整PermitRootLogin

linux開啟SSH允許root使用者遠端登入,允許無密碼登入

 目錄 首先輸入當前使用者的密碼 然後輸入root賬戶的密碼 確認root使用者的密碼 編輯ssh的配置檔案,命令:nano /etc/ssh/s

linux中禁止root使用者ssh遠端登入修改ssh遠端登入

<p style="list-style: none; margin: 5px 0px 10px; padding: 0px; font-size: 26px; text-align: cent

ubuntu14.04 ssh允許root使用者遠端登入

 修改 root 密碼 sudo passwd root 2. 以其他賬戶登入,通過 sudo nano 修改 /etc/ssh/sshd_config : [email protected]:~$ su - root Password: [email

Linux允許或禁止root使用者遠端登入方法

1)vi /etc/ssh/sshd_config,將PermitRootLogin的值改成yes,並儲存 PermitRootLogin yes 2)service sshd restart 這樣,就能用root直接ssh登入了 如果在1)中,將PermitRoot

Linux】讓Linux系統允許使用root賬號遠端登入

1獲得管理員許可權 命令:sudo  -s回車 輸入密碼 2設定root使用者的密碼 命令:sudo passwd  root回車 設定root使用者的密碼 3修改配置項 敲入命令 vi  /etc/ssh/sshd_con

【096】Linux CentOS 7.3 允許或禁止root使用者遠端登入

1)vi /etc/ssh/sshd_config,將PermitRootLogin的值改成yes,並儲存 PermitRootLogin yes 2)service sshd restart 這樣,就能用root直接ssh登入了 如果在1)中,

Linuxroot許可權新增使用者,給使用者或使用者組指定目錄的讀寫許可權(比如:tomcat檔案的讀寫許可權,可以用於新使用者部署專案)

目的: 在linux環境中為了安全起見,不能讓所有專案都用root部署(防止root許可權過大,對重要檔案的誤操作),所以新加使用者或使用者組,對新使用者或使用者組授予部分檔案操作的許可權。 1.建立使用者newuser,並設定密碼(預設連帶建立newuser組) # useradd n

Mysql 在 linux(ubuntu)的安裝與遠端登入

伺服器端安裝   安裝伺服器端:在終端中輸入如下命令,回車後,然後按照提示輸入 sudo apt-get install mysql-server 伺服器用於接收客戶端的請求、執行sql語句、管理資料庫 伺服器端一般以服務方式管理,名稱為mysql 啟動服務 s

linux禁止root賬號直接登入修改埠號

Linux的預設管理員名即是root,只需要知道ROOT密碼即可直接登入SSH。禁止Root從SSH直接登入可以提高伺服器安全性 不允許root直接登陸 1、修改相關檔案 vim /etc/ssh/sshd_config SSH執行以上命令,修改sshd_

Linux定時自動備份遠端主機mysql資料庫拷貝到其他主機

環境:             作業系統CentOS6.5、mysql5.1             主資料庫伺服器(A)、備資料庫伺服器(B)、異地備份伺服器(C)             主、備資料庫伺服器的mysql資料庫完全一致,異地備份伺服器用於儲存備份檔案。 實

linux系統運用python指令碼遠端登入裝置

python遠端登入import subprocess import os import time import logging import re import paramiko import string import sys import datetime import

Linux筆記:禁止root賬號遠端登入、新增swap分割槽、修改ulimit

新裝ubuntu需要執行的幾個操作:1.修改sshd預設埠,禁止root登入sudo vi /etc/ssh/sshd_config將PermitRootLogin 設定為No      --表示禁止root遠端登入將Port 修改為2222sudo service sshd

linux允許root使用者登入圖形介面的解決辦法

Fedora 使用su切換到root的許可權。 vi /etc/pam.d/gdm-password 再前面加個#號,註釋掉下面這行. auth required pam_succeed_if.so

Debian Linux 獲得Root許可權以及使用Root登入影象介面的辦法

我也是一個Debian Linux 的初學者,在寫這個文章的時候我裝Linux 不到12小時,對於一個從Windows轉過的來攻城師來說異常的痛苦。 Debian Linux 下獲得Root許可權問題我也是研究了許久,網上關於這個的文章也是一大堆,但是沒有一個能解決我的問題

Linux查看Nginx等的發連接數和連接狀態

如果 等待 -a med web linux 活動 ant 無連接 Linux下查看Nginx等的並發連接數和連接狀態。 1、查看Web服務器(Nginx Apache)的並發請求數及其TCP連接狀態: netstat -n | awk ‘/^tcp/ {++S[$NF]}

Linux破解root口令以及修改用戶模式

linux 破解root口令 修改用戶模式 -----------------------實驗一:破解root口令----------------------------1、init 12、進入圖一界面,再進入圖二界面,輸入single 、s、S、1,進入單用戶模式。3、未輸入命令就進入了系統,

linux禁止root遠程登錄和添加新用戶

改密 mage run linu user all 登錄 div light 一、添加和root權限一樣的用戶 1、 adduser admin passwd admin (修改密碼) 然後輸入密碼 (密碼簡單了通不過) 系統提示輸入確認密

ubuntu允許root用戶ssh遠程登錄

get 啟用 遠程 修改密碼 oot ins otl 配置 shel SSH服務器,可以通過SSH協議來訪問遠程服務器,代替telnet和ftp。但是ubuntu默認是不啟用root用戶也不允許root遠程登錄的。所以需要先啟用root用戶 啟用root用戶:sudo pa