客户做安全检查,认为telnet和rsh均有安全漏洞,要求整改所有系统的访问方式为ssh方式(其实,无论这些安全检查的人员还是客户都不明白不安全的意义是什么?)。
传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。或者使用网络抓包工具进行数据分析,据说可以分析出用户密码等资料。
ssh是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。而且ssh传输数据过程是经过压缩的,也就可以在一定程度上缓解网络压力。
这就遇到一个问题,那就是大量脚本使用rsh方式调用,修改ssh后要求脚本运行以及其他各系统间切换均需要避免密码输入和ssh认证。否则十几台机器,甚至几十台几百台机器的日常巡检和问题定位将受到灾难性的打击。
1. 创建公钥信息:
#ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (<UseHome>/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in <UseHome>/.ssh/id_rsa.
Your public key has been saved in <UseHome>.ssh/id_rsa.pub.
The key fingerprint is:
ba:2c:77:eb:6d:aa:aa:d8:37:08:2f:b1:b9:e8:5a:2f <UseName>@<HostName>
输入后,会提示创建.ssh/id_rsa、id_rsa.pub的文件,其中第一个为密钥,第二个为公钥。过程中会要求输入密码,为了ssh访问过程无须密码,可以直接回车
2. 部署信息
拷贝id_rsa.pub中的内容到需要访问的主机,并建立~/.ssh/authorized_keys文件,将先前的id_rsa.pub拷贝到目标机。
cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxhdf+JIMlwvtUML8Xe74A1SXDIVn4Evv1HjxoxJQPmzAzq5ZdADsfKLwD/amPLlLDycNJWp/qCghF9DgIDK72+0Ze/PF+Fqyy8Ii8a/Qi7rIKw/j5xk8cBmT9uUDYaksnrgbP
wbFo7QMTAt3yJG+64410vj0qRTZz+361Vc32hAzqIYwRlse7NMsvaAPzKqs3RtSg+TsBuKxPTDMKe71MH0fb6UsduLZ4+nLOi3J7Fhck6erE67+rmOK/4D0M+FTF699nAsvusUMu2bs0MV7zFgrNb+PLma5+uaKYT4JMeM4PRsj9TOaik
evGe077LY0wrnslaW/PNHjFYBxghY2tQ== <UseName>@<HostName>
3. ssh访问
使用ssh <IP/HOSTNAME>进行访问,第一次需要保存ssh认证信息,以后则可以自动登录,其他相关ssh相关程序诸如scp等也可以无需密码
# ssh <TargetHost>
The authenticity of host '<TargetHost> (<TargetIP>)' can't be established.
RSA key fingerprint is 34:b9:92:06:53:e6:91:4d:47:92:73:57:78:6a:5d:09.
Are you sure you want to continue connecting (yes/no)?yes
Warning: Permanently added '<TargetHost>,<TargetIP>' (RSA) to the list of known hosts.
这是因为首次访问后,ssh会在.ssh/known_hosts中保存各个认证过的主机信息:
# cat ~/.ssh/known_hosts
<HostName>,<HostIP> ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6bRsr8LI8qg/kW8RvW2BaEXwKMURzpkl0FRKnH2cm460wPNGqH33RyrIY8lT23If0ZuT7gOAuz57d5GXAawl+NCFmkl2VH+lKJuma89xCGuMU0dbAcrl
chWDk554TEMm1WwiQ/fJdJKdr0ZkNVanDNoIxQuIOEoEzO0Auwr3OvXIaSM+exuLQa3v8hhiefZTtzC3Rc9jVJj0w3CiV/82qhBwXNjNVy/WFoFLZsJ8IsgoH8EnlhL8GBpoAMmdPNUsMpjYqfayHY+17i5zRhabG5ayXc2MeJs6yWMx1
0HH0kLbepUMX/eralAWp69nPvEsK8v4cpjeJfXa/uF/DIo/lQ==
4. 多机器部署
根据部署情况可以发现实际上部署简单,但是多一台机器实际上就多了一个阶乘的操作次数。根据原理可以简化部署方案,比如
a) 先全部机器独立运行ssh-keygen -t rsa
b) 输出所有机器的id_rsa.pub到独立文件
c) 将所有id_rsa.pub信息部署到所有机器的authorized_keys文件中
d) 激活一台机到所有目标机器的访问,包括对自己的,使known_hosts文件中包括所有维护主机信息
e) 传递known_hosts到所有主机对应位置。
这一些的操作最好在rsh没有被禁用前部署和调整,可以减轻很多手工操作
分享到:
相关推荐
在IT行业中,SSH(Secure Shell)是一种用于在网络之间安全传输数据的协议,广泛应用于远程登录、文件传输等场景。SSH密钥对的生成是SSH安全性的基础,`ssh-keygen`命令是Unix/Linux系统中用于生成这些密钥的工具。...
ssh-keygen 中文手册
1 什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;它是建立在应用层基础上的安全协议。 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供...
SSH(Secure Shell)是一种网络...总的来说,`ssh-keygen`是SSH公钥认证的关键工具,通过合理使用它可以提高远程访问的安全性,同时简化登录流程。了解其基本用法和安全实践,能帮助你更好地管理你的SSH密钥和认证。
### 使用ssh-keygen实现免密码登录Linux的方法 在日常运维工作中,频繁地通过SSH协议登录服务器进行管理和操作是常见的需求之一。为了提高工作效率并确保安全性,实现免密码登录Linux主机是一种非常实用的方法。...
`ssh-keygen-web`可能使用了浏览器的Web Crypto API来实现这一功能,该API允许JavaScript代码进行加密操作。 项目中提到的`browser selfhosted`标签意味着`ssh-keygen-web`可以被用户自托管,这意味着用户可以将这...
本文将详细解释如何在Linux系统中设置SSH免密码登录。 首先,我们要理解SSH免密码登录的基本原理。这依赖于SSH密钥对,即一个公钥和一个私钥。公钥存储在远程服务器上,而私钥保留在本地机器上。当本地机器尝试连接...
使用webcrypto API生成ssh密钥对 观看现场演示,为 ... 在其他任何地方,您都应该可以使用ssh-keygen,这是为SSH生成密钥对的推荐方法。 如何从OpenSSH公钥格式转换为PEM 有关如何转换,请参见 。
SSH秘钥无密码登录和批量分发详细笔记文档实战案例 在IT运维中,SSH秘钥无密码登录是一种非常重要的技术,它能够实现远程服务器之间的无密码登录和批量分发,提高了运维效率和安全性。下面是关于SSH秘钥无密码登录...
Postgres用户下SSH无密码登录 SSH(Secure Shell)是一种安全的远程登录协议,用于远程管理Linux系统。 SSH无密码登录是指在两台服务器之间,不需要输入密码便可实现登录的功能。本文将详细介绍Postgres用户下SSH...
generate-ssh 是一个围绕 ssh-keygen 工具的小包装。 它支持正确的错误处理,不会多次调用回调 (:<) 并且支持在 Windows 上定位 ssh-keygen 可执行文件。 生成(选择{附加路径,评论,位},cb(错误,数据{私人,...
### OpenSSH与SSH2的关系及免密码登录配置详解 #### 一、OpenSSH与SSH2简介 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。SSH2是SSH协议的第二个版本,提供了更安全的数据传输方式。OpenSSH是...
### SSH Key 免密码登录详解 #### 一、SSH Key 的基本概念与原理 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。通过SSH,可以在非安全的网络环境中提供安全的远程登录服务,其安全性主要依靠...
Linux 下设置 SSH 无密码登录 Linux 是一个流行的开源操作系统, SSH(Secure Shell)是 Linux 中的一种安全协议,允许用户远程登录到 Linux 服务器并执行命令。设置 SSH 无密码登录可以提高 Linux 服务器的安全性...
ssh-keygen 生成SSH密钥对 安装 确保您拥有ssh-keygen(如果不确定,请尝试$ ssh-keygen ) npm软件包安装 npm install ssh-keygen 或从github下载并放在./node_modules中 用法 var keygen = require ( 'ssh-...
Linux系统SSH无密码登录设置手册 1. 引言 SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他网络服务。它通过加密技术保护数据传输,使得管理员可以在不同主机间进行无密码...
clj-ssh-keygen 从头开始生成Clojure的RSA PKCS#1密钥(无第三方密钥),导出PEM和OpenSSH格式 ☛仅用于黑客和教育目的! 用法 ( let [key ( generate-key )] ( write-private-key! key " pvt.pem " ) ( write-...