linux 免密登陆

1. 在开始之前,你需要了解一些情况

用 SSH 公钥认证从而连接登陆远程服务器是一个强大的功能,比通过账号密码登录更加安全。SSH 公钥依赖于非对称加密算法,该算法生成一对分开的密钥,即公钥和私钥。你保密私钥,并将它存储在你用来进行远程连接系统的电脑上。因此,你可以分享你的公钥而不泄露私钥;你存储公钥到远程系统的 ~/.ssh/authorized_keys 文件。

为了使用 SSH 公钥认证:

  • 远程系统上必须安装同一版本的 SSH。本文的信息是假设远程系统使用的是 OpenSSH 的情况下,如果远程系统使用的是不同的版本(如 Techia SSH),下面的描述可能不准确。
  • 你用于远程连接服务的电脑上也必须安装同一版本的 SSH。
  • 你需要能把你的公钥传输到远程系统上。

2. 在 Linux 或者 Mac 电脑上设置公钥验证

为了在 Linux 或者 Mac 上设置公钥验证:

  1. 登陆到你将要用于远程连接的电脑上,然后用 SSH 命令行去通过 RSA 算法生成密钥对。
ssh-keygen -t rsa
  1. 你将根据提示提供文件名(保存密钥对)和密码(保存你的私钥)
    • 文件名:如果不输入任何值,按下回车。则是默认的文件名

      另外,你也可以在提示中输入文件名(如,my_ssh_key),然后按下回车键。然而一些远程主机都被配置为通过默认的路径和默认文件名去接受私钥(对于 RSA 密钥来说,默认为 ~/.ssh/id_rsa)。因此,为了使用有不同的文件名的私钥去通过认证,或者使用没存储在默认路径的私钥去通过认证,你必须明确的调用在 SSH 命令行或者在 SSH 客户端的配置文件(~/.ssh/config)。这里是详细介绍

    • 密码:输入至少五个字节的密码,然后按下回车键。如果你什么都没输入,就按下回车,那你的私钥将处于无密码保护状态

      注意

      UITS 强烈建议使用密码保护你的私钥。如果你没有密码保护你的私钥,可以想象任何一个拥有连接您电脑权限的人,在有对应公钥的情况下,在任意一台远程系统上都能登陆到您的账号。

你的私钥将使用默认文件名(如:id_rsa)或者你指定的文件名(如:my_ssh_key)生成,然后存储在你电脑主目录下的 .ssh 文件下。(如:~/.ssh/id_rsa~/.ssh/my_ssh_key

相应的公钥也将用相同的文件名生成(但是有额外的 .pub 扩展名),存储在相同目录下(如:~/.ssh/id_rsa.pub 或者 ~/.ssh/my_ssh_key.pub

  1. 使用 SFTP 或者 SCP 复制你的公钥文件(如:~/.ssh/id_rsa.pub)到你的远程系统的账号上。如用 scp 命令行
scp ~/.ssh/id_rsa.pub username@host:
  1. 用你的账号和密码登陆远程系统

如果远程电脑上没有配置支持基于密码的身份认证,你将需要联系系统管理员,添加你的公钥到你账户下的 ~/.ssh/authorized_keys 文件(如果你的账户上没有 ~/.ssh/authorized_keys 文件,管理员可以为你创建一个文件)。一旦你的公钥被加入到远程系统的 ~/.ssh/authorized_keys 文件中,设置过程就完成了,你可以在有你私钥的电脑上通过 SSH 登陆你的远程账

  1. 如果你远程系统的账户中没有 ~/.ssh/authorized_keys 文件,创建一个;在命令行中,输入以下命令:
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys

注意:

如果远程系统上你的账号已经有 ~/.ssh/authorized_keys 文件,执行以上命令,不会对已经存在的文件造成任何损害

  1. 在远程系统中,添加之前上传的公钥文件(如:~/id_rsa.pun)内容到 ~/.ssh/authorized_keys 文件的新的行;在命令行,输入以下内容:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

你可能想验证 ~/.ssh/authorized_keys 的内容去确保正确添加了你的公钥;在命令行输入以下内容:

more ~/.ssh/authorized_keys
  1. 在远程系统的你的账户上,可以安全删除公钥文件(如:~/id_rsa.pub)。在命令行输入以下内容:
rm ~/id_rsa.pub

另外,如果你想要在远程系统上保存公钥的备份,把它移动到你的 .ssh 目录中;在命令行执行以下命令:

mv ~/id_rsa.pub ~/.ssh/
  1. 可选。重复执行步骤 3-7 去添加你的公钥到其他的你想要通过 SSH 链接的远程系统中。

  2. 现在,你应该可以在拥有你私钥(如:~/.ssh/id_rsa.pub)的电脑上通过 SSH 远程连接到你的账户

    • 如果你的私钥有了密码保护,那么远程系统将会提示你关于这个密码(你私钥的密码没有传递给远程系统):
    $ ssh username@host
    Enter passphrase for key '/username/Host1/.ssh/id_rsa':
    Last login: date from otherHost
    
    • 如果你的私钥没有密码保护,远程系统将会把你置于你的主目录的命令行,而不会就密码问题提示你
    $ ssh username@host
    Last login: date from otherHost
    

如果你现在用的私钥,并不是默认名称或者存放在默认的目录(如:~/.ssh/id_rsa),你必须用明确的使用下面的两个方法中的一个

1. 在 SSH 命令行:添加 `-i` 标志和你的私钥路径

比如:为了调用你的私钥 `host2_key`,存放在 `~/.ssh/old_keys` 目录,当连接你在远程主机上的账户时,输入:

ssh -i ~/.ssh/old_keys/host2_key username@host

2. 在 SSH 客户端的配置文件中:SSH 会从以下来源中获取配置数据:
    
    1) 来自命令行选项
    2) 来自用户客户端的配置文件(~/.ssh/config),如果存在的话
    3) 从系统范围的客户端配置文件(/etc/ssh/ssh_config)

SSH 客户端配置文件是一个包含了关键字和参数的 txt 文件。为了指定哪个私钥应该被用来与特定的远程主机进行连接,用文本编辑器创建 ~/.ssh/config 包含了 HostIdentityFile 关键字。

比如,要链接 host2.somewhere.edu,为了使 SSH 自动调用存储在 ~/.ssh/old_keys 目录的私钥 host2_key,创建一个包含了以下行的 ~/.ssh/config 文件

Host host2.somewhere.edu
IdentityFile ~/.ssh/old_keys/host2_key

保存文件后,SSH 将用指定的私钥去与这个主机进行连接。

你可以添加多个 HostIdentityFile 去指定不同的私钥对应不同的主机列表,如:

Host host2.somewhere.edu
IdentityFile ~/.ssh/old_keys/host2_key

Host host4.somewhere.edu
IdentityFile ~/.ssh/old_keys/host4_key

Host host6.somewhere.edu
IdentityFile ~/.ssh/old_keys/host6_key

另外,你也可以用单个的 * 号为所有的主机提供一个全局的默认值。(即,一个私钥对应多个主机)

Host *.somewhere.edu
IdentityFile ~/.ssh/old_keys/all_hosts_key

以上内容,均来源于https://kb.iu.edu/d/aews

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

推荐阅读更多精彩内容