ssh-keygen(linux 命令) 创建 private key(私钥) , public key (公钥),实现ssh,scp,sftp命令无密码连接

ssh-keygen(linux 命令) 创建 private key(私钥) , public key (公钥),实现ssh,scp,sftp命令无密码连接_sun0322的博客-CSDN博客

目录

■相关知识   之   非对称加密

■想要达到的效果

意义1:

意义2:

■连接时  使用到的命令 (在ServerA上执行的命令)

各种命令

・sftp

・ssh

・scp

RSA 与 DSA

■具体操作

1.首先  生成公钥  和 私钥 

原理说明

2.根据以上原理,配置公钥和私钥

在ServerB中,想登录的用户(user001)的 ./ssh 配置公钥authorized_keys

3.连接 

 在ServerA中,使用私钥连接 ServerB

■补充说明1 :konw_hosts 文件

作用:

■公钥 以及  私钥 的内容

■生成公钥 私钥  时,使用到的命令 ssh-keygen 的简单介绍

■参考  (工作中使用到的单词(软件开发))

  └40. RAS // ssh-keygen(linux 命令)  // private key(私钥) , public key (公钥)

■其它通信安全的相关知识

1.什么是:公钥,私钥,证书 ,以及 HTTPS,

2.使用JDK创建证书   (并在 自己的 Web工程中 使用证书)

3.网络通信相关知识(整理在SFDC相关的资料中)

4.证明书安装(no trusted certificate found 时,需要用安装证明书的方式,来通过认证)

5.客户端证书     (和【 https 网站 的 CA证书】, 分别是 两个 证书。)

6.在浏览器中查看  客户端证书・信任的证书

7.ssh,scp,sftp等命令无密码使用(通过公钥,私钥实现)

■网络通信相关知识

1.tracert  路由查询命令

2.网关和代理服务器的异同

3.密钥库文件格式(.jks(Java Keystore)  .ks .jce  .p12 .pfx.....),  证书格式(.cer .crt/.rsa  .p7c/.p7m/.p7s  .p12.....)

4.cacerts 是一个信任库。信任库用于验证对等方的身份。  // 是certified authority certificates 的缩写  

■错误现象

1.can't open /dev/tty: No such device or address

2.XXX


====

■相关知识   之   非对称加密

SSH密钥登录使用非对称加密,
用户通过自己的密钥登录,
(注意:私钥必须自己保存,不能泄漏,公钥则是公开,可以对外发送保存。)
公钥和私钥是一对一的关系:只有对应的私钥才能解密对应公钥加密的数据。

■想要达到的效果

ServerA 无密码 访问 ServerB 

意义1:

(可无密码使用 ssh,scp等命令,

    不用输入密码,当有连接服务器,文件传输等需求时,可以使用自动化脚本实现)

意义2:

   不用担心ServerB的用户密码是否发生变更,是要你有私钥,ServerB配置了公钥,你就可以使用公钥访问ServerB中,配置了公钥的用户。

   (注意,下面提到的./ssh 目录,是在用户目录下的./ssh目录。 

        比如配置在root下面, 那么,你就是以root用户登录的。)

     

■连接时  使用到的命令 (在ServerA上执行的命令)

ssh -i /root/.ssh/id_rsa_serverB  user001@serverB

===

scp -i /root/.ssh/id_rsa_serverB  /AAA/BBB/a.txt user001@serverB:/AAA/CCC/a.txt

===

sftp -i /root/.ssh/id_rsa_serverB  user001@serverB << EOF
mkdir CCC
chmod 755 CCC
mput a.txt /home/user001/CCC/a.txt
chmod 644  /home/user001/CCC/a.txt

bye
EOF

FTP相关命令(手机FTP服务启动应用)_sun0322的博客-CSDN博客

各种命令

・sftp

sftp -i /XXX/XXX/id_rsa user001@server001 <<EOF
。。。
EOF

sftp user001@server001 <<EOF
。。。
EOF

配置好了的话,默认使用 -i 对应的私钥

// TODO

===

・ssh

ssh -i /XXX/XXX/id_dsa user001@server001

==

・scp

scp -i /XXX/XXX/id_dsa /XXX/FROM/*.csv user001@server001:/XXX/TO/

===

RSA 与 DSA

RSA 与 DSA 都是非对称加密算法。其中RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积);DSA 的安全性是基于整数有限域离散对数难题。基本上可以认为相同密钥长度的 RSA 算法与 DSA 算法安全性相当。

■具体操作

1.首先  生成公钥  和 私钥 

(在ServerA上) ssh-keygen -t rsa 命令生成了一个密钥(私钥)和一个公钥,
(而且密钥可以设置自己的密码,)

==

 ==

原理说明

可以把密钥     理解成一把钥匙,   公钥   理解成这把钥匙对应的锁头,


把锁头(公钥)放到想要控制的serverB上, 锁住serverB, 只有拥有钥匙(密钥)的人, 才能打开锁头, 进入serverB并控制,
 
而对于拥有这把钥匙的人, 必需得知道钥匙本身的密码,才能使用这把钥匙 (除非这把钥匙没设置密码), 这样就可以防止钥匙被人配了(私钥被人复制)
(其它serverC,使用ServerA的私钥,同样可以访问ServerB)

=== 

2.根据以上原理,配置公钥和私钥

在ServerB中,想登录的用户(user001) ./ssh 配置公钥authorized_keys

要控制的serverB的目录
在想登录的, 用户的目录下面
./ssh
   └authorized_keys   //  允许访问的Server的公钥信息,存放在这里 (比如,存放ServiceA的公钥信息)
   └konw_hosts       // serverB,访问过的其它的server的信息   (■补充说明1中解释)
 

3.连接 

 在ServerA中,使用私钥连接 ServerB

===
■最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:
ssh -i /root/.ssh/id_rsa_serverB  user001@serverB
(有多个私钥,或者私钥没有保存在 ./ssh下面时,需要指定私钥的位置)
===
 
 
 

===

■补充说明1 :konw_hosts 文件

作用:

   如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

例:AAServer  连接  BBServer

AA(例子中是本地电脑)通过ssh首次连接到BB(例子中是Linux的虚拟机),BB会将公钥1(host key)传递给AA,

AA将公钥1存入(登录用户目录下的.ssh文件夹\)known_hosts文件中,

IP 地址  是  BB(Linux虚拟机)的IP 

===

以后AA再连接BB时,BB依然会传递给AA一个公钥2,

OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,

如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

■公钥 以及  私钥 的内容

■生成公钥 私钥  时,使用到的命令 ssh-keygen 的简单介绍

ssh-keygen -t rsa

(windows系统中,也有这个命令)
====
-t: (type) 指定密钥的加密算法(一般 ed25519 , rsa),省略默认使用RSA。ssh-keygen -t rsa
-b: (bits) 指定密钥的二进制位数,数值越大加密解密的开销越大,同时密钥的安全程度越高,一般设置 1024 或者 2048 ssh-keygen -b 1024
-C: (comment) 指定密钥文件的注释,格式username@host: ssh-keygen -t rsa -b 2048 -C xxx1@email.com 生成
====

ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]
                [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-N new_passphrase] [-O option] [-w provider]


 

■参考  (工作中使用到的单词(软件开发))

工作中使用到的单词(软件开发)_sun0322的博客-CSDN博客

  └40. RAS // ssh-keygen(linux 命令)  // private key(私钥) , public key (公钥)

===

■其它通信安全的相关知识

1.什么是:公钥,私钥,证书 ,以及 HTTPS,

公钥与私钥,HTTPS详解_玩名堂_的博客-CSDN博客

2.使用JDK创建证书   (并在 自己的 Web工程中 使用证书)

使用JDK中的 keytool【创建证书】・【查看】・【使用】_sun0322的博客-CSDN博客_keytool查看证书

3.网络通信相关知识(整理在SFDC相关的资料中)

外部系统连接SFDC,获取SFDC侧的数据_sun0322的博客-CSDN博客_sfdc系统

4.证明书安装(no trusted certificate found 时,需要用安装证明书的方式,来通过认证)

HttpClient 使用时,出现「no trusted certificate found」的原因 (JDK没有安装相应的证明书)_sun0322的博客-CSDN博客

Keytool –import –keystore im.jks –file certificate.cer
// certificate.cer 是要访问https网站的证明书

// 安装后,证明书信息,已被添加到List中
keytool -list  -keystore cacerts -storepass changeit

5.客户端证书     (和【 https 网站 的 CA证书】, 分别是 两个 证书。)

【客户端证书  (SSL証明書(個人証明書))】是 用于证明客户端用户身份的数字证书
网站如何设置,让访问者,必须在客户端浏览器安装证书后,才能访问网站。

这个一般在服务器端设置:
比如下面链接中介绍的

如何要求客户端出示“客户端证书”后,才能访问网站 - 张天利 - 博客园

---

6.在浏览器中查看  客户端证书・信任的证书

(Edge) ⇒【設定】 ⇒【プライバシー、検索、サービス 】⇒ 【セキュリティ】 ⇒ 証明書の管理

(Edge) ⇒设置 ⇒  隐私,搜索服务 ⇒ 安全性 ⇒ 管理证书 

 ---

7.ssh,scp,sftp等命令无密码使用(通过公钥,私钥实现)

ssh-keygen(linux 命令) 创建 private key(私钥) , public key (公钥),实现ssh,scp,sftp命令无密码连接_sun0322的博客-CSDN博客

---

■网络通信相关知识

1.tracert  路由查询命令

Windows系统下,tracert路由跟踪指令详解_秦岭熊猫的博客-CSDN博客_windows路由跟踪命令

2.网关和代理服务器的异同

网关和代理服务器的异同_huangshulang1234的博客-CSDN博客_代理服务器和网关的区别

3.密钥库文件格式(.jks(Java Keystore)  .ks .jce  .p12 .pfx.....),  证书格式(.cer .crt/.rsa  .p7c/.p7m/.p7s  .p12.....)

证书格式区别 & pvk & spc & cer_steel7c4的博客-CSDN博客_ca证书文件格式

4.cacerts 是一个信任库。信任库用于验证对等方的身份。  // 是certified authority certificates 的缩写  

certified    英 [ˈsɜːtɪˌfaɪd] adj. 被证明的,有保证的,具有证明文件的
authority    英 [ɔːˈθɒrɪtɪ]  n. 权力;行政管理机构;当局;当权者;权威;权威人士
  ( authorized [ˈɔːθəˌraɪzd]  权威认可的,经授权的   // 401 Unauthorized  )
certificate  英 [səˈtɪfɪkɪt] n.文凭;执照;证明,证书

---

■错误现象

1.can't open /dev/tty: No such device or address

错误现象:
 ・当在使用SSH连接时出现"can't open /dev/tty: No such device or address"错误

错误原因:
 ・无法打开终端设备:该错误通常是由于同时使用了控制台和伪终端(PTY)会话的终端连接导致的
 (比如,
   
使用工具执行某个 shell, 里面有ssh命令, 并且是ssh初次连接到对方server,
     这时,会提示你是否把信息写入 ~/.ssh/know_hosts 文件中,

      既,需要在终端,根据提示,输入【Y】)


tty:一词常用来指代终端设备或终端会话

比如

①配置

在要连接的服务器的用户的【/root/.ssh/authorized_keys】文件中,配置公钥

==

②连接

===
免密连接成功

===

上面所有输出内容

sxz001@sxzap01:~/.ssh$ ssh -v root@sxzap01
OpenSSH_8.2p1 Ubuntu-4ubuntu0.6, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to sxzap01 [192.168.31.128] port 22.
debug1: Connection established.
debug1: identity file /home/sxz001/.ssh/id_rsa type 0
debug1: identity file /home/sxz001/.ssh/id_rsa-cert type -1
debug1: identity file /home/sxz001/.ssh/id_dsa type -1
debug1: identity file /home/sxz001/.ssh/id_dsa-cert type -1
debug1: identity file /home/sxz001/.ssh/id_ecdsa type -1
debug1: identity file /home/sxz001/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/sxz001/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/sxz001/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/sxz001/.ssh/id_ed25519 type -1
debug1: identity file /home/sxz001/.ssh/id_ed25519-cert type -1
debug1: identity file /home/sxz001/.ssh/id_ed25519_sk type -1
debug1: identity file /home/sxz001/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/sxz001/.ssh/id_xmss type -1
debug1: identity file /home/sxz001/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.2p1 Ubuntu-4ubuntu0.6
debug1: match: OpenSSH_8.2p1 Ubuntu-4ubuntu0.6 pat OpenSSH* compat 0x04000000
debug1: Authenticating to sxzap01:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:lfwkJItAwsx4XZnRzuC8bz9lfSwnlgc0AvWFq9cll9s
The authenticity of host 'sxzap01 (192.168.31.128)' can't be established.
ECDSA key fingerprint is SHA256:lfwkJItAwsx4XZnRzuC8bz9lfSwnlgc0AvWFq9cll9s.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'sxzap01,192.168.31.128' (ECDSA) to the list of known hosts.
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: /home/sxz001/.ssh/id_rsa RSA SHA256:wJ/0XFJ0b60zC/OiKIh2BbGFOzGjm6xoKFk+XWb9MfY
debug1: Will attempt key: /home/sxz001/.ssh/id_dsa
debug1: Will attempt key: /home/sxz001/.ssh/id_ecdsa
debug1: Will attempt key: /home/sxz001/.ssh/id_ecdsa_sk
debug1: Will attempt key: /home/sxz001/.ssh/id_ed25519
debug1: Will attempt key: /home/sxz001/.ssh/id_ed25519_sk
debug1: Will attempt key: /home/sxz001/.ssh/id_xmss
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/sxz001/.ssh/id_rsa RSA SHA256:wJ/0XFJ0b60zC/OiKIh2BbGFOzGjm6xoKFk+XWb9MfY
debug1: Server accepts key: /home/sxz001/.ssh/id_rsa RSA SHA256:wJ/0XFJ0b60zC/OiKIh2BbGFOzGjm6xoKFk+XWb9MfY
debug1: Authentication succeeded (publickey).
Authenticated to sxzap01 ([192.168.31.128]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Remote: /root/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug1: Remote: /root/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-90-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat 14 Oct 2023 03:03:47 PM CST

  System load:  0.89               Processes:                342
  Usage of /:   67.2% of 25.46GB   Users logged in:          1
  Memory usage: 38%                IPv4 address for docker0: 172.17.0.1
  Swap usage:   0%                 IPv4 address for ens33:   192.168.31.128

  => There is 1 zombie process.

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

Expanded Security Maintenance for Applications is not enabled.

257 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

New release '22.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


3 updates could not be installed automatically. For more details,
see /var/log/unattended-upgrades/unattended-upgrades.log


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@sxzap01:~#
root@sxzap01:~#

===

连接信息被写入【sxz001@sxzap01:~/.ssh$ cat known_hosts】文件中

2.XXX

====

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值