linux生成ssh
『壹』 怎樣在虛擬機的linux中安裝ssh
一樓說的,前一半對,後一半不太對(不叫做安裝SSH)x0dx0a通常SSH會在你裝系統時就裝好,頂多有的系統會在即將安裝完時會有一個提示詢問你是否在開機時啟動SSH服務而已x0dx0ax0dx0aSSH開啟後會有一個進程SSHD在運行,可以用netstat -nap 命令查詢得到,例如:x0dx0a$ netstat -nap | grep -i sshdx0dx0atcp 0 0 :::22 :::* LISTEN 29391/sshdx0dx0ax0dx0a客戶端若想通過SSH協議以user身份登錄某一台伺服器(比如IP地址為1.2.3.4),則可以x0dx0assh [email protected]若SSHD的監聽埠不是默認的22埠,假設已改為1234埠,則可以這樣x0dx0assh -p 1234 [email protected]是SSH軟體包中的一個子程序,用來生成密匙對,使你的登錄更為安全(防止「中間人」攻擊)x0dx0a更多資料自已查x0dx0ax0dx0aSSH相關文件(常見)x0dx0a/usr/sbin/sshd SSHD服務端的服務程序x0dx0a/usr/bin/ssh SSH客戶端x0dx0a/usr/bin/ssh-keygen 這個上面說過x0dx0a/usr/bin/ssh-keyscan 看名字可以猜到x0dx0a/etc/ssh/ssh_config 客戶端配置文件x0dx0a/etc/ssh/sshd_config 服務端配置文件
『貳』 如何在linux系統上定製ssh來簡化遠程訪問
可以設置SSH免密登錄。在Linux中打開ssh驗證,主機中生成公鑰,發送給從機,從機將公鑰添加到許可權驗證中,這樣主機可以通過ssh直接登錄從機
『叄』 linux清除ssh重新生成會覆蓋原有的嘛
會。在linux系統中清除ssh文件後,如果需要恢復該文件的使用,可以對其進行重新生成,並且該文件會覆蓋掉之前原有的舊文件。
『肆』 linux下怎麼樣設置ssh無密碼登錄
1.Linux下生成密鑰
ssh-keygen的命令手冊,通過」man ssh-keygen「命令:
通過命令」ssh-keygen -t rsa「
生成之後會在用戶的根目錄生成一個 「.ssh」的文件夾
進入「.ssh」會生成以下幾個文件
authorized_keys:存放遠程免密登錄的公鑰,主要通過這個文件記錄多台機器的公鑰
id_rsa : 生成的私鑰文件
id_rsa.pub :生成的公鑰文件
know_hosts : 已知的主機公鑰清單
如果希望ssh公鑰生效需滿足至少下面兩個條件:
1) .ssh目錄的許可權必須是700
2) .ssh/authorized_keys文件許可權必須是600
2.遠程免密登錄
原理圖:
常用以下幾種方法:
2.1 通過ssh--id的方式
命令: ssh--id -i ~/.ssh/id_rsa.put <romte_ip>
舉例:
[root@test .ssh]# ssh--id -i ~/.ssh/id_rsa.pub 192.168.91.135
[email protected]'s password:
Now try logging into the machine, with "ssh '192.168.91.135'", andcheck in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@test .ssh]# ssh [email protected]
Last login: Mon Oct 10 01:25:49 2016 from 192.168.91.133
[root@localhost ~]#
常見錯誤:
[root@test ~]# ssh--id -i~/.ssh/id_rsa.pub 192.168.91.135
-bash: ssh--id: command not found //提示命令不存在
解決辦法:yum -y installopenssh-clients
2.2通過scp將內容寫到對方的文件中
命令:scp -p~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys
舉例:
[root@test .ssh]# scp -p ~/.ssh/[email protected]:/root/.ssh/authorized_keys
[email protected]'s password:
id_rsa.pub 100% 408 0.4KB/s 00:00
[root@test .ssh]#
[root@test .ssh]#
[root@test .ssh]#
[root@test .ssh]# ssh [email protected]
Last login: Mon Oct 10 01:27:02 2016 from 192.168.91.133
[root@localhost ~]#
也可以分為兩步操作:
$ scp ~/.ssh/id_rsa.pubroot@<remote_ip>:pub_key //將文件拷貝至遠程伺服器
$ cat ~/pub_key>>~/.ssh/authorized_keys //將內容追加到authorized_keys文件中,不過要登錄遠程伺服器來執行這條命令
2.3 通過Ansible實現批量免密
2.3.1 將需要做免密操作的機器hosts添加到/etc/ansible/hosts下:
[Avoid close]
192.168.91.132
192.168.91.133
192.168.91.134
2.3.2 執行命令進行免密操作
ansible<groupname> -m authorized_key -a "user=root key='{{lookup('file','/root/.ssh/id_rsa.pub') }}'" -k
示例:
[root@test sshpass-1.05]# ansible test -m authorized_key -a"user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k
SSH password: ----->輸入密碼
192.168.91.135 | success >> {
"changed": true,
"key": "ssh-rsa 7A3izwT3///18B6FV5moE/8yTbFA4dBQahdtVP +sODbtGPC34HMGAHjFlsC/SJffLuT/ug/== [email protected]",
"key_options": null,
"keyfile": "/root/.ssh/authorized_keys",
"manage_dir": true,
"path": null,
"state": "present",
"unique": false,
"user": "root"
}
[root@test sshpass-1.05]#
2.4 手工復制粘貼的方式
將本地id_rsa.pub文件的內容拷貝至遠程伺服器的~/.ssh/authorized_keys文件中
『伍』 linux如何配置雙機SSH信任然後雙向免密碼登陸
一、實現原理
使用一種被稱為"公私鑰"認證的方式來進行ssh登錄。"公私鑰"認證方式簡單的解釋是:
首先在客戶端上創建一對公私鑰(公鑰文件:~/.ssh/id_rsa.pub;私鑰文件:~/.ssh/id_rsa),然後把公鑰放到伺服器上(~/.ssh/authorized_keys),自己保留好私鑰。當ssh登錄時,ssh程序會發送私鑰去和伺服器上的公鑰做匹配。如果匹配成功就可以登錄了。
二、實驗環境
A機:TS-DEV/10.0.0.163
B機:CS-DEV/10.0.0.188
三、Linux/Unix雙機建立信任
3.1
在A機生成證書
在A機root用戶下執行ssh-keygen命令,在需要輸入的地方,直接回車,生成建立安全信任關系的證書。
#
ssh-keygen
-t
rsa
注意:在程序提示輸入passphrase時直接輸入回車,表示無證書密碼。
上述命令將生成私鑰證書id_rsa和公鑰證書id_rsa.pub,存放在用戶家目錄的.ssh子目錄中。
3.2
查看~/.ssh生成密鑰的文件
#
cd
~/.ssh
#
ll
3.3
A對B建立信任關系
將公鑰證書id_rsa.pub復制到機器B的root家目錄的.ssh子目錄中,同時將文件名更換為authorized_keys,此時需要輸入B機的root用戶密碼(還未建立信任關系)。建立了客戶端到伺服器端的信任關系後,客戶端就可以不用再輸入密碼,就可以從伺服器端拷貝數據了。
#
scp
-r
id_rsa.pub
10.0.0.188:/root/.ssh/authorized_keys
3.4
B對A建立信任關系
在B機上執行同樣的操作,建立B對A的信任關系。
#
ssh-keygen
-t
rsa
#
cd
~/.ssh/
#
ll
#
scp
-r
id_rsa.pub
10.0.0.163:/root/.ssh/authorized_keys
如果想讓B,C同時可以scp不輸入密碼,傳輸A中的數據;
則要把B、C的公鑰都給
A;
操作步驟:把兩機器的id_rsa.pub中的數據都拷貝到A的/root/.ssh/authorized_keys文件中,一行表示一條;
A:
scp
-r
id_rsa.pub
10.0.0.163:/root/.ssh/authorized_keys
B:
scp
-r
id_rsa.pub
10.0.0.188:/root/.ssh/authorized_keys
測試
ssh
[email protected]
'hostname'
///
ssh
[email protected]
'hostname'
如果連接反應慢,請修改以下兩參數
/etc/ssh/sshd_config
GSSAPIAuthentication
no
UseDNS
no
然後重啟service
sshd
restart
『陸』 Linux 下實現SSH互信
一、准備兩台伺服器:
A機:192.168.1.1
B機:192.168.1.2
二、雙機建立信任
1、在A機生成秘鑰證書
在root下執行ssh-keygen命令,一路回車,生成秘鑰證書
# ssh-keygen -t rsa
2、查看生成秘鑰文件
# cd ~/.ssh
# ll
文件:私鑰證書id_rsa、公鑰證書id_rsa.pub
3、A對B建立信任關系
3.1 將公鑰證書id_rsa.pub復制到機器B的root家目錄的.ssh子目錄中,同時將文件名更換為authorized_keys
# scp -r id_rsa.pub [email protected]:/root/.ssh/authorized_keys
3.2 若3.1報錯:No such file or directory
使用:# ssh--id -i id_rsa.pub [email protected]
ssh--id命令會自動將id_rsa.pub文件的內容追加到遠程主機root用戶下.ssh/authorized_keys文件中
3.3 查看B機器是否接收
# ssh 192.168.1.2
# cd .ssh/
# ls
# cat authorized_keys
# exit
3.4 B對A建立信任,同上3的操作步驟
『柒』 linux下安裝ssh
(SSH是一個用來替代TELNET、ftp以及R命令的工具包,主要是想解決口令在網上明文傳輸的問題。為了系統安全和用戶自身的權益,推廣SSH是必要的。SSH有兩個版本,我們現在介紹的是版本2。)
安裝SSH
具體步驟如下:
獲得SSH軟體包。 (ftp://ftp.pku.e.cn:/pub/unix/ssh-2.3.0.tar.gz)
成為超級用戶(root).
# gzip –cd ssh-2.3.0.tar.gz |tar xvf –
# cd ssh-2.3.0
# ./configure
注意,如果你希望用tcp_wrappers來控制SSH,那麼在configure時需要加上選項「--with-libwrap=/path/to/libwrap/」, 用來告訴SSH關於libwrap.a 和tcpd.h的位置。
# make
# make install
和SSH有關的程序都放置在/usr/local/bin下,包括ssh,sftp,sshd2, ssh-keygen等。
二、配置
SSH的配置文件在/etc/ssh2下,其中包括sshd2的主機公鑰和私鑰:hostkey和hostkey.pub。這兩個文件通常是在安裝SSH時自動生成的。你可以通過下面的命令重新來生成它們:
# rm /etc/ssh2/hostkey*
# ssh-keygen2 –P /etc/ssh2/hostkey
而ssh2_config 文件一般情形下無需修改。
三、啟動sshd2
每個要使用SSH的系統都必須在後台運行sshd2。用手工啟動:
# /usr/local/bin/sshd2&
可以在「/etc/rc2.d/S99local」中加入該命令,這樣系統每次啟動時會自動啟動sshd2。
四、用tcp_wrappers控制SSH
安裝SSH的站點可以用tcp_wrappers來限制哪些IP地址可以通過ssh來訪問自己。比如,在/etc/hosts.allow中加入
sshd,sshd2: 10.0.0.1
那麼只有10.0.0.1可以通過ssh來訪問該主機。
以上都是系統管理員完成的工作。下面我們說說普通用戶如何使用SSH。
五、基本應用
每個用戶在使用SSH之前,都要完成以下步驟:
在本地主機(比如,local.pku.e.cn)上生成自己的ssh公鑰和私鑰。命令如下:
local# ssh-keygen
Generating 1024-bit dsa key pair
1 oOo.oOo.o
Key generated.
1024-bit dsa, teng@ns, Fri Oct 20 2000 17:27:05
Passphrase :************ /*在此輸入你的口令,以後訪問這台主機時要用。
Again :************ /*
Private key saved to /home1/teng/.ssh2/id_dsa_1024_a
Public key saved to /home1/teng/.ssh2/id_dsa_1024_a.pub
生成的私鑰和公鑰(id_dsa_1024_a和id_dsa_1024_a.pub)存放在你家目錄的~/.ssh2目錄下。和用戶相關的SSH配置文件都在~/.ssh2下。私鑰由用戶保存在本地主機上,而公鑰需傳送到遠地主機的你自己的帳號的~/.ssh2下,如果你要用ssh2訪問本地主機的話。
在~/.ssh2下創建「identification」文件用來說明進行身份認證的私鑰。命令如下:
local:~/.ssh2# echo "IdKey id_dsa_1024_a" > identification
3.同樣地,在遠地主機(比如,remote.pku.e.cn)上完成上面步驟。
4.將本地(local.pku.e.cn)下你自己(這里是「teng」)的公鑰(id_dsa_1024_a.pub)拷貝到遠地主機(remote.pku.e.cn)上你自己家目錄下的.ssh2目錄下,可命名為「local.pub」,一般用ftp上傳即可。
在遠地主機上,你自己家目錄的.ssh2目錄下,創建「authorization」文件,其中指定用來進行身份認證的公鑰文件。命令如下:
remote:~/.ssh2# echo 「Key local.pub」 > authorization
現在你可以從本地用ssh2登錄到遠地系統了。命令如下:
local# ssh remote.pku.e.cn
Passphrase for key "/home1/teng/.ssh2/id_dsa_1024_a" with comment "1024-bit dsa,
teng@ns, Fri Oct 20 2000 17:27:05":***********
這時會要你輸入你的ssh口令(Passphrase)。驗證通過後,即登錄到remote主機上。
『捌』 如何生成SSH key
因為在使用repo git下載代碼時需要使用ssh方式,目前下載代碼的方式不支持密碼方式,僅支持ssh-key的方式,那麼需要下載代碼的用戶請根據以下方法在本地生成ssh-key,然後將對應的證書文件發送給版主或者管理員,當獲取下載代碼許可權後可以直接下載; 訪問許可權的設定,新的git庫採用證書認證的方式,請在你們的本機上執行: # ssh-keygen 根據提示輸入信息後會在~/.ssh目錄下生成id_rsa.pub文件和id_rsa文件。請將id_rsa.pub文件發給我(版主)。然後在使用ssh的時候使用id_rsa證書。 linux和MacOS使用ssh登錄時會自動提供生成的ssh證書。windows上可以考慮使用xshell或者putty創建證書。 目前沒有提供密碼登錄。