使用 ssh 密鑰進(jìn)行遠(yuǎn)程登錄

云服務(wù)商 青云 提供的服務(wù)和編寫的 使用 SSH 密鑰遠(yuǎn)程登錄訪問主機 值得參考。

Linux 環(huán)境


CentOS 源于 Red Hat Enterprise Linux(RHEL),了解 RHEL 6: OpenSSHRHEL 7: OpenSSH

  • chmod 700 /path/to/

  • chmod 600 /path/to/kp-1234abcd
    // 將私鑰文件設(shè)置為只有自己可讀寫。ssh 會檢查這個訪問權(quán)限是否合理,如果別人可訪問,則會拒絕或者忽略該私鑰文件。

  • ssh -i /path/to/kp-1234abcd [user@]hostname
    // -i 指明 identity_file。無參運行 ssh 可看幫助。

  • ssh [user@]hostname
    // 如果你已經(jīng)配置過 ~/.ssh/config,則看一下這個配置文件,ssh 使用會更簡單。
    參閱:/etc/ssh/ssh_config,man ssh_config

  • Using the SSH Config File,這篇講得很清晰。

# ~/.ssh/config 文件示例
# Host 參數(shù)標(biāo)明以下內(nèi)容僅適用于訪問 236 主機時適用,Host 參數(shù)本身只是一個入口字符串,比如:·`ssh 236` 就表示你使用 236 這個 Host 的配置。
Host 236
  HostName 192.168.99.236
  User git
  Port 22
  IdentityFile ~/.ssh/rsa-michael-236
Host 3root
  HostName 192.168.99.3
  User root
  Port 22
  IdentityFile ~/.ssh/rsa-3root-michael
# activehacker account
Host github-activehacker
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_activehacker
# jexchan account
Host github-jexchan
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_jexchan

使用時:git clone git@github-jexchan:jexchan/xtry.git,其中 git@github-jexchan 指明用戶和主機,github-jexchan 就是 Host 的值,因為在 config 里面配置了 User git,在 git clone 時可以不再指定 git@ 了,即 git clone github-jexchan:jexchan/xtry.git。端口默認(rèn)就是 22。

  • GIT_SSH_COMMAND 方法 @ How to tell git which private key to use?
    GIT_SSH_COMMAND="ssh -i ~/.ssh/rsa-michael-gitolite-3 -F /dev/null" git clone michael@192.168.99.3:gitolite-admin.git了解 gitolite

  • GitHub Clone with SSH 的默認(rèn)樣式:git@github.com:jexchan/xtry.git,就用默認(rèn)即可,通用挺好;

Host github.com
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/github_brahmsjia

Mac 環(huán)境


在 Terminal 下參考 Linux 方法。
通常下載的文件放在 ~/Downloads/目錄下。

Windows 環(huán)境


Git Bash 方法

如果你安裝過 git for windows,想必熟悉 Git Bash,這個環(huán)境和 *nix 風(fēng)格保持一致,可以參考 Linux 方法。

Xshell 方法

Create a New Session
Xshell-Create a New Session Properties-Connection.png
Xshell - Authentication - Method 選擇 Public Key
Xshell-New Session Properties-Authentication
Xshell - 導(dǎo)入私鑰文件
User Keys 導(dǎo)入私鑰文件.png
Terminal Encoding:Unicode (UTF-8)

設(shè)置 UTF-8 以正常顯示中文。

設(shè)置遠(yuǎn)程主機的編碼 Encoding 為 UTF-8
文件 -> 屬性
Properties-Terminal Encoding
Appearance Font
Appearance Font Name&Size
ssh user@hostname

在界面上配置好后,在 Xshell 命令行下:
Xshell:> ssh user@hostname 即可。注意:Xshell 下的 ssh 功能比較弱。

關(guān)于密鑰和 authorized_keys 文件

  • 以下的內(nèi)容由你的服務(wù)器管理員為你做好配置;
  • SSH 密鑰對

云主機在生成 SSH 公鑰/私鑰密鑰對時,會要求你立刻下載其私鑰,并保管好私鑰,云服務(wù)商是不保存你的私鑰的,只有公鑰(public key)在云主機上。你在使用 SSH 時用到的 identity file 就是私鑰(private key)文件。
使用 ssh-keygen 命令也可以自己生成。

  • ssh-keygen 命令
    密鑰對可通過 ssh-keygen -t rsa -C 'comment' -f filename-of-key-file 生成。該命令通常在 /usr/bin 下。
    生成 2 個文件:filename-of-key-file(私鑰) 和 filename-of-key-file.pub(公鑰)。
    不指定 -f 參數(shù),則默認(rèn)存到 ~/.ssh/下,生成 id_rsa 和 id_rsa.pub 兩個文件。
    不指定 -C 參數(shù),則 comment 內(nèi)容默認(rèn)為 user@hostname。我習(xí)慣指定 -C 參數(shù)值和密鑰文件名一致,比如:rsa-hostip-usrrsa-3git-michael

    See ssh-keygen(1) for more information.**

    Users generate SSH keys locally and upload their public key to the server before being able to interact with it.

  • ~/.ssh/authorized_keys
    公鑰文件存放在 ~/.ssh/authorized_keys 文件中,一行一個。凡持有和其中任一公鑰配對的私鑰的用戶都可以訪問。

chmod -R 700 .ssh/ ;注意權(quán)限!
chmod 600 .ssh/authorized_keys ;注意權(quán)限!

Lists the public keys (DSA/ECDSA/RSA) that can be used for logging in as this user. The format of this file is described above. The content of the file is not highly sensitive, but the recommended permissions are read/write for the user, and not accessible by others.

If this file, the ~/.ssh directory, or the user's home directory are writable by other users, then the file could be modified or replaced by unauthorized users.  In this case, sshd will not allow it to be used unless the StrictModes option has been set to “no”.
  • gitserver 上 git 用戶 authorized_keys 文件訪問權(quán)限問題
    如果 authorized_keys 文件、HOME/.ssh 目錄 或HOME 目錄讓本用戶擁有者之外的用戶有寫權(quán)限,那么 sshd 就會拒絕使用 ~/.ssh/authorized_keys 文件中的 key 來進(jìn)行認(rèn)證。

    可以通過更多了解 sshd 命令,來了解對 authorized_keys 文件的要求。

    Git on the Server - Setting Up the Server 上也有相關(guān)內(nèi)容的描述。

  • Xshell 登錄時出現(xiàn):The selected user key is not registered in the remote host. Try again.
    說明 authorized_keys 文件可能因某種原因被破壞,查看一下,把公鑰正確填入即可,也有可能你的用戶名(user name)填錯了。

  • 相關(guān)文件
    /etc/ssh/ssh_config ;the ssh client system-wide configuration file.
    /etc/ssh/sshd_config ;the sshd server system-wide configuration file. # StrictModes 參數(shù)設(shè)置。
    ~/.ssh/config ; user-specific file.

    **See ssh_config(5) for more information. **

  • 上述文件訪問權(quán)限過寬等原因可能導(dǎo)致以下現(xiàn)象
    git clone 時報告:Permission denied (publickey) ; 說明 publickey 有問題。

git clone git@192.168.99.236:/home/git/wanpinghui/wphdoc.git
Cloning into 'wphdoc'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

公鑰私鑰示例

公鑰

公鑰文件內(nèi)容示例:ssh-rsa AAAAB3NzaC1yc2E...W6xHD comment
其中:通過 ssh-keygen 命令 -C 參數(shù)可以指定 comment 內(nèi)容。

私鑰
-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQEAxm+gAzG1HtQl27GBdpOGBJu9MPuTIT3Z/Wp8SlOKiCzhJhTV
eVOwP/kG4wlIn4/p5QIMs3Fyf9itO9YEsRI2jtIKFeBldtmNAGTWRkAr2ZHuw1bX
...
CqsCgYBwgLBNyGRguDiWq2Dt+yqmtNF9NqadCPoUiObhnRrhEPGURF0SfZt+xcCv
y2vQmlg8an3aMi+LiIsex+m4Ty7opdHoBlmImlySxmWMQ+PHT8V5xqe8/NYQ4B3A
V0wqjVbl6vM+9DM+mch7gIS8OV5k4ViOPvs7CjdjULJ12MK68g==
-----END RSA PRIVATE KEY-----

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內(nèi)容