1. 程式人生 > >SSH 登入伺服器 提供證書登入

SSH 登入伺服器 提供證書登入

Mac 環境下面--------

遠端主機ip:HostIpAddress
如果沒有 key 話需要自己生成,或找同事索取.

1.生成key
如果本地有id_rsa和id_rsa.pub這兩個檔案就不要再生成一次了,否則之前已經設定好的網站就白弄了。

ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile]

ssh-keygen -t rsa


2.把公鑰id_rsa.pub拷到遠端主機上面去
scp /.ssh/id_rsa.pub

[email protected]:~/.ssh/ir.pub (這裡沒用id_rsa.pub是因為防止把遠端主機上的公鑰覆蓋)


3.把公鑰id_rsa.pub追加到授權檔案中
cat ~/.ssh/ir.pub >> ~/.ssh/authorized_keys
如果authorized_keys不存在,則建立之 touch ~/.ssh/authorized_keys(# 注意: 必須將~/.ssh/authorized_keys的許可權改為600, 該檔案用於儲存ssh客戶端生成的公鑰,可以修改伺服器的ssh服務端配置檔案/etc/ssh/sshd_config來指定其他檔名)

mac中的檔案是/etc/sshd_config

The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2

but this is overridden so installations will only check .ssh/authorized_keys

AuthorizedKeysFile .ssh/authorized_keys


4.回到本地主機,免密碼登陸遠端主機
ssh [email protected](預設使用的是~/.ssh/id_rsa)
假如在生成金鑰公鑰對檔案時用-f指定了其他的檔名,需要使用-i來指定私鑰檔案

ssh [email protected] -i /path/to/your_id_rsa

或者在全域性配置檔案/etc/ssh_config(本地配置檔案~/.ssh/config,沒有則建立之,一定注意配置書寫格式.不然換出問題)中新增如下配置:

Host RemoteHostIpAddress
        IdentityFile /path/to/your_id_rsa


方便小技巧:
1.為每個伺服器指定私鑰公鑰對檔案
通過在~/.ssh/config中配置可以實現為每個伺服器指定不同的配置檔案

Host HostIpAddress

IdentityFile /path/to/your_id_rsa

2.每次登陸時仍然要ssh [email protected],ipAddress不好記,怎麼辦?
在/etc/hosts中新增自己容易記的主機名
例如:

192.168.11.222 hackathon

這樣登入時就可以使用ssh [email protected]了。

不過要~/.ssh/config也要改一下:

Host hackathon
        IdentityFile /path/to/your_id_rsa
3.指定登陸使用者
Host hackathon
       IdentityFile /Users/user1/.ssh/hackathon_rsa
       user root

這樣每次登陸時,就可以直接ssh hackathon了,並且是以root使用者登陸的。

4.session copy,多次登陸只輸入一次密碼
在~/.ssh/config中新增如下3行,只要在已經有一個terminal登入到aaa.bbb.com中後就可以session copy然後免密碼登陸了。

Host aaa.bbb.com

ControlMaster auto

ControlPath ~/.ssh/master-%[email protected]%h:%p

5.登陸就是執行很少的命令,不登陸能不能執行命令?
登陸一次忙活半天,登陸上去了就執行很少的命令,能不能不登陸了?

可以

ssh hackathon “your command”

例如:

[email protected]:~/.ssh$ ssh hackathon “ls /”
bin
boot
data
dev
etc
home

6.安裝sshpass

sudo apt-get install sshpass

安裝完成後使用sshpass允許你用 -p 引數指定明文密碼,然後直接登入遠端伺服器。例如:

sshpass -p ‘你的密碼’ ssh 使用者名稱@伺服器ip地址

用 ‘-p’ 指定了密碼後,還需要在後面跟上標準的 ssh 連線命令。
7.other錯誤處理
如果連線時出現如下的錯誤:
Agent admitted failure to sign using the key
則使用 ssh-add 指令將私鑰加進來 (根據命名不同更改 id_rsa)
ssh-add ~/.ssh/id_rsa

---------------------------------------要是別人給你的證書是 .ppk 怎麼辦 別急 !!!-------------------------------------------------------------------------

  1. 使用Homebrew安裝putty(homebrew是Mac下的包管理工具):

$brew install putty

同時會安裝puttygen。

  1. 使用puttygen從.ppk檔案產生.pem檔案:

$puttygen privatekey.ppk -O private-openssh -o privatekey.pem

注意:前面一個是大寫O,後面一個小寫o。

  1. 使用.pem遠端登入

¥ssh -i privatekey.pem [email protected]