linux:ssh 信任免密登录-尊龙官方平台

linux:ssh 信任免密登录

el/2024/3/25 16:52:39

linux:ssh 信任免密登录

ssh 登录通常需要输入 remote 的用户名和密码。

可以通过在 local 和 remote 两侧进行一些信任配置,使得 local 通过 ssh 登录 remote 时不需要输入密码而直接登录。

主机:

local:
client@192.168.44.150
[client@localhost ~]$ uname -a
linux localhost.localdomain 2.6.32-642.el6.x86_64 #1 smp tue may 10 17:27:01 utc 2016 x86_64 x86_64 x86_64 gnu/linux
[client@localhost ~]$ cat /etc/redhat-release 
centos release 6.8 (final)
[client@localhost ~]$ ifconfig | grep "inet addr"inet addr:192.168.44.150  bcast:192.168.44.255  mask:255.255.255.0inet addr:127.0.0.1  mask:255.0.0.0remote:
server@192.168.44.151
[server@localhost ~]$ uname -a
linux localhost.localdomain 2.6.32-642.el6.x86_64 #1 smp tue may 10 17:27:01 utc 2016 x86_64 x86_64 x86_64 gnu/linux
[server@localhost ~]$ cat /etc/redhat-release
centos release 6.8 (final)
[server@localhost ~]$ ifconfig | grep "inet addr"inet addr:192.168.44.151  bcast:192.168.44.255  mask:255.255.255.0inet addr:127.0.0.1  mask:255.0.0.0

目的:

通过配置 ssh 信任,使得 client@192.168.44.150 登录到 server@192.168.44.151 免密。

配置:

1)client@192.168.44.150

操作:

[client@localhost ~]$ ssh-keygen
generating public/private rsa key pair.
enter file in which to save the key (/home/client/.ssh/id_rsa): 
created directory '/home/client/.ssh'.
enter passphrase (empty for no passphrase): 
enter same passphrase again: 
your identification has been saved in /home/client/.ssh/id_rsa.
your public key has been saved in /home/client/.ssh/id_rsa.pub.
the key fingerprint is:
06:9c:eb:74:72:f9:6d:f6:8b:6b:26:6e:82:54:29:bb client@localhost.localdomain
the key's randomart image is:
 --[ rsa 2048]---- 
|                 |
|     . .         |
|         .       |
|      .oo.       |
|        s        |
|     oo= . .     |
|     ..o  .      |
|      e . oooo   |
|          . o.o. |
 ----------------- 

解释:

在 client 中使用 ssh-keygen 生成一对 rsa 算法密钥:

[client@localhost ~]$ ll .ssh/
total 8
-rw-------. 1 client client 1675 jul 17 14:00 id_rsa
-rw-r--r--. 1 client client  410 jul 17 14:00 id_rsa.pub

其中,id_rsa 是私钥,id_rsa.pub 是公钥。

注:$home/.ssh 目录为 ssh-keygen 自动生成。

2)server@192.168.44.151

操作:

[server@localhost ~]$ mkdir .ssh
[server@localhost ~]$ ls -ld .ssh
drwxrwxr-x. 2 server server 4096 jul 17 14:05 .ssh
[server@localhost ~]$ chmod 700 .ssh
[server@localhost ~]$ ls -ld .ssh
drwx------. 2 server server 4096 jul 17 14:05 .ssh

解释:

在 server 中创建 $home/.ssh 目录,并将 .ssh 目录权限修改为700。

3)server@192.168.44.151

操作:

[server@localhost ~]$ touch .ssh/authorized_keys
[server@localhost ~]$ ll .ssh/authorized_keys
-rw-rw-r--. 1 server server 0 jul 17 14:08 .ssh/authorized_keys
[server@localhost ~]$ chmod 600 .ssh/authorized_keys 
[server@localhost ~]$ ll .ssh/authorized_keys
-rw-------. 1 server server 0 jul 17 14:08 .ssh/authorized_keys

server 中创建 $home/.ssh/authorized_keys,并将 authorized_keys 文件权限修改为600。

注:如果已有 $home/.ssh/authorized_keys,则检查文件权限是否为600即可,不必重建此文件。

4)

client@192.168.44.150:/home/client/.ssh/id_rsa.pub

append to (追加)

server@192.168.44.151:/home/server/.ssh/authorized_keys

[client@localhost ~]$ cat .ssh/id_rsa.pub 
ssh-rsa aaaab3nzac1yc2eaaaabiwaaaqeapywfh17o0n6 pyctkdup8cfpf4rscwl/flr19riquqt7nvhyxzddsxljth3sv8u5ty2wiavltwprwjxzvopo9vho0hutjbtjan8qxc2avk/wyvpbrgwtbnxzhtnleuvddesp8sslzw1n4uwsjvgmlou31fl2tpj/6joto8ivlp0mhi/latcdxynyr2jbwek7u6p47k1szh6hm2i6t/notml7sli5ozgyd rhrmfo6qqh1gxnxslmqu6li7lmhpyrhlvy4sd/ 3lnqhoxii29tkwpzub2vo/ncgzufikqy/hpp0snvug66nmgnmp972itl28wbmdar4yvl6p1dvtqxq== client@localhost.localdomain
[server@localhost ~]$ cat .ssh/authorized_keys 
ssh-rsa aaaab3nzac1yc2eaaaabiwaaaqeapywfh17o0n6 pyctkdup8cfpf4rscwl/flr19riquqt7nvhyxzddsxljth3sv8u5ty2wiavltwprwjxzvopo9vho0hutjbtjan8qxc2avk/wyvpbrgwtbnxzhtnleuvddesp8sslzw1n4uwsjvgmlou31fl2tpj/6joto8ivlp0mhi/latcdxynyr2jbwek7u6p47k1szh6hm2i6t/notml7sli5ozgyd rhrmfo6qqh1gxnxslmqu6li7lmhpyrhlvy4sd/ 3lnqhoxii29tkwpzub2vo/ncgzufikqy/hpp0snvug66nmgnmp972itl28wbmdar4yvl6p1dvtqxq== client@localhost.localdomain

注:

将 rsa.pub 中的文本追加(末尾,新起一行)到 authorized_keys 即可(如果已存在 authorized_keys 并且已有数据)。

测试:

client@192.168.44.150:

[client@localhost ~]$ ssh server@192.168.44.151
the authenticity of host '192.168.44.151 (192.168.44.151)' can't be established.
rsa key fingerprint is c8:36:ca:50:29:24:18:f8:51:02:69:2f:b8:f3:b7:d3.
are you sure you want to continue connecting (yes/no)? yes
warning: permanently added '192.168.44.151' (rsa) to the list of known hosts.
last login: tue jul 17 14:13:54 2018 from 192.168.44.150
[server@localhost ~]$ ifconfig | grep "inet addr"inet addr:192.168.44.151  bcast:192.168.44.255  mask:255.255.255.0inet addr:127.0.0.1  mask:255.0.0.0

直接输入 ssh 登录命令可以免密登录 remote。

并非每次都需要输入 yes ,当输入 yes 时 ssh 将对应 remote 信息加入到了 $home/.ssh/known_hosts 中。

[client@localhost ~]$ cat .ssh/known_hosts 
192.168.44.151 ssh-rsa aaaab3nzac1yc2eaaaabiwaaaqea2n/qcrl8c0hyo6wuhm 8m5vnl1 2oj6ka9bebd7uggycdamnutsie8piun 0cpzac2l/zyvmcxt8shyytyp1zhg4 ucn5p4or3qtk6qge8sdpab2zrytaoiccmsszyefdyd4vk5wrey0gztnfydrvmlijo3uhzobren4eapegwqd6kpoz ltgr1itbfjf3rgiozzf9r10xs7obprev7hroddmp1in6rexbycqwp3dq1p1ldw4dzi19vr1tohrcrmok0xd0syxz6hzg /mdxongamqeeqlf920413zekjkiknap3nhziaaekj5vl/vs94qkadwxnndy0mqdvi04mtyw==

以后 local 登录 remote 就不必重复输入 yes 啦!

[client@localhost ~]$ ssh server@192.168.44.151
last login: tue jul 17 14:20:33 2018 from 192.168.44.150
[server@localhost ~]$ 

密钥算法:

默认情况下,ssh-keygen 生成的是 rsa 密钥对。

[clientx@localhost ~]$ ssh-keygen
generating public/private rsa key pair.
enter file in which to save the key (/home/clientx/.ssh/id_rsa):

注意发现 rsa 提示。

我们可以使用另一种 dsa 算法生成密钥对。

[clientx@localhost ~]$ ssh-keygen -t dsa
generating public/private dsa key pair.
enter file in which to save the key (/home/clientx/.ssh/id_dsa): 
created directory '/home/clientx/.ssh'.
enter passphrase (empty for no passphrase): 
enter same passphrase again: 
your identification has been saved in /home/clientx/.ssh/id_dsa.
your public key has been saved in /home/clientx/.ssh/id_dsa.pub.
the key fingerprint is:
28:96:46:3c:e7:a6:a1:fb:aa:0c:94:80:71:80:5f:4f clientx@localhost.localdomain
the key's randomart image is:
 --[ dsa 1024]---- 
| ..              |
|oo .. e          |
|o. . o.          |
|. o. =..         |
| o  *   s        |
|.    =           |
|. . .            |
|o  .             |
|.ooo.            |
 ----------------- 

查看 dsa 密钥对:

[clientx@localhost ~]$ ll .ssh/*
-rw-------. 1 clientx clientx 668 jul 17 14:26 .ssh/id_dsa
-rw-r--r--. 1 clientx clientx 619 jul 17 14:26 .ssh/id_dsa.pub

公钥:id_dsa.pub

私钥:id_dsa

将 dsa 密钥对中的 public key 追加到 server@192.168.44.151 的鉴权文件(~/.ssh/authorized_keys)中:

[clientx@localhost ~]$ cat .ssh/id_dsa.pub 
ssh-dss aaaab3nzac1kc3maaacbajz8gy2pwsicjptrs7uyveoljtetpglvk/kw1g tati5lrttkfakbb1g1yafdgvuko7udzf0pcnlvvylhtukb9mswrelkrzwwook stp6hzxjf9nu8psdfnjusxcvzbrh94 zffttyn5gtex5xm6fsab1/hn1pi9x 7fgf otacxaaaafqd1ml80dggkwrokptbziekcdvixmwaaaibdqiy85zaspmbidineadxj1db7vue3juyfekp3gverkruz82j1jfc3waei/vdgqnuntkygmivxdsbelm8glyvvmywwk0mc9cg/i2w8wm47v7myfujquqdwxopn7h m7168cxefvvo/srnpzda4kd/e4x5 4kaaqc2q9xjc520bnaaaaib6bxiiy / kpte oda6gm9ts6q8rfbtuv9ogwxophk/sgzrz gwhcxwxsqmhafkkpabd3t6nr91 tgd02apxbns5t5xqsdkwo8flawxtwzzih p4dnkriolfj114oae9kmsmljggikprthnt0qj49/wm8fxklzfdvux2lk7cmxiw== clientx@localhost.localdomain
[server@localhost ~]$ cat .ssh/authorized_keys 
ssh-rsa aaaab3nzac1yc2eaaaabiwaaaqeapywfh17o0n6 pyctkdup8cfpf4rscwl/flr19riquqt7nvhyxzddsxljth3sv8u5ty2wiavltwprwjxzvopo9vho0hutjbtjan8qxc2avk/wyvpbrgwtbnxzhtnleuvddesp8sslzw1n4uwsjvgmlou31fl2tpj/6joto8ivlp0mhi/latcdxynyr2jbwek7u6p47k1szh6hm2i6t/notml7sli5ozgyd rhrmfo6qqh1gxnxslmqu6li7lmhpyrhlvy4sd/ 3lnqhoxii29tkwpzub2vo/ncgzufikqy/hpp0snvug66nmgnmp972itl28wbmdar4yvl6p1dvtqxq== client@localhost.localdomain
ssh-dss aaaab3nzac1kc3maaacbajz8gy2pwsicjptrs7uyveoljtetpglvk/kw1g tati5lrttkfakbb1g1yafdgvuko7udzf0pcnlvvylhtukb9mswrelkrzwwook stp6hzxjf9nu8psdfnjusxcvzbrh94 zffttyn5gtex5xm6fsab1/hn1pi9x 7fgf otacxaaaafqd1ml80dggkwrokptbziekcdvixmwaaaibdqiy85zaspmbidineadxj1db7vue3juyfekp3gverkruz82j1jfc3waei/vdgqnuntkygmivxdsbelm8glyvvmywwk0mc9cg/i2w8wm47v7myfujquqdwxopn7h m7168cxefvvo/srnpzda4kd/e4x5 4kaaqc2q9xjc520bnaaaaib6bxiiy / kpte oda6gm9ts6q8rfbtuv9ogwxophk/sgzrz gwhcxwxsqmhafkkpabd3t6nr91 tgd02apxbns5t5xqsdkwo8flawxtwzzih p4dnkriolfj114oae9kmsmljggikprthnt0qj49/wm8fxklzfdvux2lk7cmxiw== clientx@localhost.localdomain

在 authorized_keys 中,第一行是 client@192.168.44.150 的 ssh 公钥,第二行是 clientx@192.168.44.150 的 ssh 公钥。

测试:

[clientx@localhost ~]$ ssh server@192.168.44.151
last login: tue jul 17 14:30:58 2018 from 192.168.44.150
[server@localhost ~]$ ifconfig | grep "inet addr"inet addr:192.168.44.151  bcast:192.168.44.255  mask:255.255.255.0inet addr:127.0.0.1  mask:255.0.0.0

至此,我们不论是在 client@192.168.44.150 亦或是 clientx@192.168.44.150 中,

都可以直接免密登录到 server@192.168.44.151。

如果是双机互为 ssh 信任,则应当在 remote 端生成 public key,并将其追加到 local 端的鉴权文件中即可。


注意:

若配置 ssh 信任失败(例如 ssh 登录依旧需要密码),请检查 local 和 remote 的 .ssh 以及相关配置文件权限是否合规。

local:

[client@localhost ~]$ ll -d .ssh
drwx------. 2 client client 4096 jul 17 14:20 .ssh
[client@localhost ~]$ ll .ssh/*
-rw-------. 1 client client 1675 jul 17 14:00 .ssh/id_rsa
-rw-r--r--. 1 client client  410 jul 17 14:00 .ssh/id_rsa.pub
-rw-r--r--. 1 client client  396 jul 17 14:20 .ssh/known_hosts

.ssh 目录是 700 权限。

.ssh 目录中的密钥对分别是 600 权限以及 644 权限。

remote:

[server@localhost ~]$ ll -d .ssh
drwx------. 2 server server 4096 jul 17 14:30 .ssh
[server@localhost ~]$ ll .ssh/*
-rw-------. 1 server server 1029 jul 17 14:30 .ssh/authorized_keys

.ssh 目录是 700 权限。

.ssh 目录中的鉴权文件是 600 权限。

参考:

https://www.cnblogs.com/iamlight/p/5019333.html

https://blog.csdn.net/franktan2010/article/details/41908083


http://www.ngui.cc/el/5127096.html

相关文章

lua:编译 lua 报错:error: readline/readline.h: no such file or directory

lua:编译 lua 报错:error: readline/readline.h: no such file or directory lua 版本:lua-5.3.5 在 lua-5.3.5 目录中执行 make linux,报错: gcc -stdgnu99 -o2 -wall -wextra -dlua_compat_5_2 -dlua_use_linux …

lua:linux 平台编译 lua 为动态链接库

lua:linux 平台编译 lua 为动态链接库 在 lua 源码的 makefile 中,没有编译动态链接库的目标(tagete),只可编译为静态库。 如何将 lua 编译为动态链接库呢? 仔细研究下 lua 的 makefile 文件,…

makefile:变量定义的优先级

makefile:变量定义的优先级 makefile 中使用的变量有三个定义来源: 1. environment: 当执行 make 的 shell 进程的环境表中定义相关变量(export)。 或者说 make 进程环境变量表,因为 make 进程是 shel…

lua:开源库 lua-cjson 安装及使用

lua:开源库 lua-cjson 安装及使用 开源库 lua-cjson 是一个简单小巧的动态库,可被 lua 脚本 require 加载。 在 lua 中通过一系列的 lua-cjson api 调用完成 lua 值与 json 值的相互转换(编码及解码)。 注:lua-cjso…

lua:lua-cjson:cannot serialise table: excessively sparse array

lua:lua-cjson:cannot serialise table: excessively sparse array code: local cjson require "cjson" local cjson2 cjson.new() local array {} array[19] 19 cjson2.encode(array) 执行时异常: cannot seria…

linux:-bash: fork: retry: resource temporarily unavailable

linux:-bash: fork: retry: resource temporarily unavailable 执行命令失败,报错: 原因: 在执行命令 x 过程中有对系统内核提出资源申请,而当前用户占用的某种资源已达到系统限定上限,资源不足。 复现&a…

c/c :udp ipv4 ipv6 客户端 服务端 简例

c/c:udp ipv4 ipv6 客户端 & 服务端 简例 客户端: /*********************************************************** * * filename : client.c * last revision : revision: 1.0 * last date : date: 2018/08/08 * author …

摘要算法:md5 及 java 实现样例

摘要算法:md5及java实现样例 md5 第五代的消息摘要算法(message digest algorithm)。 md5 是一种不可逆的单向散列函数。 假设 y f(x) ,则函数 f(x) 指代 md5 函数, x 为待摘要消息(输入)&…

摘要算法:sha 及 java 实现样例

摘要算法:sha 及 java 实现样例 相关链接:摘要算法:md5及java实现样例 sha 安全散列算法(secure hash algorithm)。 sha 与 md5 类似,都是单向不可逆散列函数,用于计算消息摘要,…

java:设置 eclipse 关联 jar 包源码

java:设置 eclipse 关联 jar 包源码 在 eclipse 中进行 java 开发,当我们想要查看某类的某个方法实现时可以同时按住 ctrl 并点击方法,即可查看源码。 但通常情况下,可以直接定位查看到的是工程包括的 java 类,而找不…
网站地图