SSH免密登陆操作及相关文件作用

820 阅读2分钟

本人在学习大数据时,需要配置集群分布式环境,其中包括hadoop100到hadoop103共四台服务器,为方便管理,需要在本地(Mac OS系统)终端中登陆四台服务器,故配置了ssh免密登陆

1. SSH免密登陆原理

2. 操作步骤

现在假设主机A要通过ssh免密登录主机B,步骤如下

# 两台机器最好都安装openssh-server / openssh-client
$ sudo apt install openssh-server
$ sudo apt install openssh-client

# 查看ssh服务是否开启
$ netstat -tlp | grep ssh 

# 在主机A上通过RSA算法生成密钥对
$ ssh-keygen -t rsa # 此时在~/.ssh文件夹中生成了两个文件 id_rsa(私钥)和id_rsa.pub(公钥)

# 上传公钥到主机B的~/.ssh/authorized_keys
$ ssh-copy-id username@hostB

#(以下为可选内容)
# 配置服务器别名文件
$ vim ~/.ssh/config

~/.ssh/config文件内容如下所示,其中

  • Host:服务器别名【任意取】
  • HostName:服务器IP地址 (此项目中通过VMware 的NAT得到)/ 主机名 / 域名【注意:如果是主机名/域名,则必须在/etc/hosts文件中写好对应的「ip-域名」映射关系】
  • User:用户名称
  • Port:SSH端口号
  • IdentityFile:主机A(此例中为本地Macbook)的私钥文件

配置完成后,大功告成,在主机A的终端输入

$ ssh 服务器别名 # 如果没配置config文件,则是$ ssh username@hostB

如果出现警告:警告: setlocale: LC_CTYPE: 无法改变区域选项 (UTF-8)(warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory)

解决方法是在/etc/environment加入如下代码,之后重新ssh登录即可

LC_ALL=zh_CN.UTF_8
LANG=zh_CN.UTF_8

3. ~/.ssh/ 目录下各文件的作用

id_rsa(私钥)

本机中通过RSA算法生成的私钥,与生成的公钥为一对。用于连接其他服务器

id_rsa.pub(公钥)

本机中通过RSA算法生成的公钥,与生成的私钥为一对。用于连接其他服务器

authorized_keys(授权文件)

记录了其他主机用于连接本机服务器的公钥,如果主机A的公钥在本机的authorized_keys文件中,则主机A可免密登陆本机服务器

known_hosts

记录了本机访问过的主机的公钥。下次访问对应主机时,OpenSSH会核对公钥,不同则发出警告,避免受到DNS Hijack之类的攻击

config(配置文件)

非必需,一开始没有config文件。它记录了ssh一些配置信息(主机别名/主机名或IP/用户名/SSH端口/IdentityFile),如果未配置config文件,则ssh连接其他主机需要通过命令ssh username@hostB,配置后,可直接ssh host

参考资料

Linux中.ssh目录下各文件的作用