使用 ssh 密钥进行远程登录

云服务商 青云 提供的服务和编写的 使用 SSH 密钥远程登录访问主机 值得参考。

Linux 环境


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

  • chmod 700 /path/to/

  • chmod 600 /path/to/kp-1234abcd
    // 将私钥文件设置为只有自己可读写。ssh 会检查这个访问权限是否合理,如果别人可访问,则会拒绝或者忽略该私钥文件。

  • ssh -i /path/to/kp-1234abcd [user@]hostname
    // -i 指明 identity_file。无参运行 ssh 可看帮助。

  • ssh [user@]hostname
    // 如果你已经配置过 ~/.ssh/config,则看一下这个配置文件,ssh 使用会更简单。
    参阅:/etc/ssh/ssh_config,man ssh_config

  • Using the SSH Config File,这篇讲得很清晰。

# ~/.ssh/config 文件示例
# Host 参数标明以下内容仅适用于访问 236 主机时适用,Host 参数本身只是一个入口字符串,比如:·`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。端口默认就是 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 的默认样式:git@github.com:jexchan/xtry.git,就用默认即可,通用挺好;

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

Mac 环境


在 Terminal 下参考 Linux 方法。
通常下载的文件放在 ~/Downloads/目录下。

Windows 环境


Git Bash 方法

如果你安装过 git for windows,想必熟悉 Git Bash,这个环境和 *nix 风格保持一致,可以参考 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 - 导入私钥文件
User Keys 导入私钥文件.png
Terminal Encoding:Unicode (UTF-8)

设置 UTF-8 以正常显示中文。

设置远程主机的编码 Encoding 为 UTF-8
文件 -> 属性
Properties-Terminal Encoding
Appearance Font
Appearance Font Name&Size
ssh user@hostname

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

关于密钥和 authorized_keys 文件

  • 以下的内容由你的服务器管理员为你做好配置;
  • SSH 密钥对

云主机在生成 SSH 公钥/私钥密钥对时,会要求你立刻下载其私钥,并保管好私钥,云服务商是不保存你的私钥的,只有公钥(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 参数,则默认存到 ~/.ssh/下,生成 id_rsa 和 id_rsa.pub 两个文件。
    不指定 -C 参数,则 comment 内容默认为 user@hostname。我习惯指定 -C 参数值和密钥文件名一致,比如: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/ ;注意权限!
chmod 600 .ssh/authorized_keys ;注意权限!

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 文件访问权限问题
    如果 authorized_keys 文件、HOME/.ssh 目录 或HOME 目录让本用户拥有者之外的用户有写权限,那么 sshd 就会拒绝使用 ~/.ssh/authorized_keys 文件中的 key 来进行认证。

    可以通过更多了解 sshd 命令,来了解对 authorized_keys 文件的要求。

    Git on the Server - Setting Up the Server 上也有相关内容的描述。

  • Xshell 登录时出现:The selected user key is not registered in the remote host. Try again.
    说明 authorized_keys 文件可能因某种原因被破坏,查看一下,把公钥正确填入即可,也有可能你的用户名(user name)填错了。

  • 相关文件
    /etc/ssh/ssh_config ;the ssh client system-wide configuration file.
    /etc/ssh/sshd_config ;the sshd server system-wide configuration file. # StrictModes 参数设置。
    ~/.ssh/config ; user-specific file.

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

  • 上述文件访问权限过宽等原因可能导致以下现象
    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.

公钥私钥示例

公钥

公钥文件内容示例:ssh-rsa AAAAB3NzaC1yc2E...W6xHD comment
其中:通过 ssh-keygen 命令 -C 参数可以指定 comment 内容。

私钥
-----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-----

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容