ssh免秘钥登录及数据拷贝
- ssh免秘钥登录及数据拷贝
- 环境
- 生成秘钥
- 拷贝公钥到到远程服务器
- 通过ssh-copy-id命令拷贝公钥到远程服务器
- 通过手动拷贝公钥到远程服务器
- 非root用户远程拷贝公钥
- 设置编码方式
- 临时设置编码
- 永久设置方法一
- 永久设置方法二
- 设置时钟同步
- 使用 ntpdate 命令
- 使用 ntpd 服务
- 使用 timedatectl 命令
- 使用 chrony 服务
ssh免秘钥登录及数据拷贝
环境
以下使用root用户操作示例:
生成秘钥
登录192.168.3.103服务器后,任意目录执行如下命令
ssh-keygen -t rsa 回撤三次即可,生成秘钥文件如下:
可以看到生成秘钥存储在/root/.ssh目录下。
公钥文件: /root/.ssh/id_rsa.pub
私钥文件: /root/.ssh/id_rsa
拷贝公钥到到远程服务器
通过ssh-copy-id命令拷贝公钥到远程服务器
方法一:通过ssh-copy-id命令将公钥拷贝到192.168.3.102远程服务器
1、拷贝前102服务器:可以看到/root/.ssh目录下没有内容。
2、103服务器执行拷贝:
ssh-copy-id -p 22 -i /root/.ssh/id_rsa.pub root@192.168.3.102
执行该命令后,需要输入远程服务器登录密码,输入后,将103服务器公钥拷贝到102服务器/root/.ssh/authorized_keys文件中。
3、拷贝后102服务器:可以看到/roo/.ssh目录下多了一个authorized_keys文件,该文件中保存着103服务器生成的公钥。
4、测试验证
通过103服务器执行ssh 命令登录102服务器,观察是否需要输入密码。
[root@node103 .ssh]# ssh -p 22 root@192.168.3.102
以上可以看到,不用输入密码,直接登录到102服务器,同时通过ifconfigc查看当前服务器地址为102,以上表示免秘钥配置成功。
通过手动拷贝公钥到远程服务器
方法二:通过手动将公钥拷贝到远程服务器/root/.ssh/authorized_keys 文件中
1、查看103服务器生成的公钥:
cat /root/.ssh/id_rsa.pub
2、复制103公钥,在102服务器执行vim /root/.ssh/authorized_keys ,将该公钥添加到文件中即可。
vim /root/.ssh/authorized_keys
3、免登录测试
/103服务器执行ssh命令登录102服务器,观察是否需要输入密码。
[root@node103 .ssh]# ssh -p 22 root@192.168.3.102
, 回撤,不用输入密码即可登录到192.168.3.102服务器,然后输入 ipconfig 查看服务器ip,如果是192.168.3.102 表示免密登录配置成功,如果需要输入密码,则检查以上配置是否正确。
注意: 如果使用非root用户(公钥服务器及远程服务器),生成公钥在/home/.ssh/目录下,不在/root/.ssh目录下。
非root用户远程拷贝公钥
示例介绍以非root用户wangsh为例,配置面秘钥登录。
1、生成公钥
可以看到生成的秘钥目录为/home/wangsh/.ssh/,而不是在/root/.ssh目录下。
2、拷贝秘钥到远程服务器
删除远程服务器authorized_keys文件。
rm -rf authorized_keys
拷贝公钥:默认将公钥拷贝到远程服务器wangsh用户的/home/wangsh/.ssh目录下。
ssh-copy-id -p 22 -i /home/wangsh/.ssh/id_rsa.pub wangsh@192.168.3.102
测试验证:登录远程服务,检查是否需要输入密码。
ssh -p ‘22’ ‘wangsh@192.168.3.102’
可以看到执行ssh命令登录102服务器,不用输入密码。以上表示配置面秘钥成功。
注意: 非root配置可能有时不生效,这种情况需要将公钥分别拷贝到远程服务的非root用户/home/wangsh/.ssh/authorized_keys和/root/.ssh/authorized_keys文件中即可。
设置编码方式
linux中文有时可能会出现乱码,需要设置编码方式,默认为en_US.UTF-8。
查看编码: echo $LANG
查看安装包:locale
临时设置编码
临时设置编码: LANG=“zh_CN.UTF-8”,该方式设置只在当前窗口有效,关闭后自动失效。
永久设置方法一
修改/etc/locale.conf文件内容,增加编码设置。
vim /etc/locale.conf
#LANG=en_US.UTF-8
LANG=zh_CN.UTF-8
刷新系统生效:source /etc/locale.conf
可以看到,编码已经生效。
永久设置方法二
修改/etc/sysconfig/i18n文件中编码设置,改为中文utf8编码即可。
vim /etc/sysconfig/i18n
#LANG=en_US.UTF-8
LANG=zh_CN.UTF-8
刷新系统生效:source /etc/sysconfig/i18n
设置时钟同步
在Linux系统中设置时钟同步通常涉及到使用网络时间协议(NTP)服务来确保系统时间与全球标准时间保持精确同步。以下是几种常见的设置时钟同步的方法:
使用 ntpdate 命令
临时同步时间:执行该命令后会立即与指定的NTP服务器同步系统时间
sudo ntpdate pool.ntp.org
定期同步: 即将同步时钟添加到系统的定时任务crontab中,
例如:在crontab文件中添加以每天凌晨3点执行一次ntpdate命令,与NTP服务器同步时间。
sudo crontab -e
0 3 * * * /usr/sbin/ntpdate pool.ntp.org
使用 ntpd 服务
安装并启用ntpd服务更适用于长期稳定的时间同步,因为它不仅会一次性校正时间,还能持续监控并微调系统时间,以应对网络延迟、系统时钟漂移等因素导致的时间偏差。
1、安装ntp服务: 根据Linux发行版不同,安装命令可能略有差异。
对于基于Debian的系统(如Ubuntu): sudo apt update && sudo apt install ntp
对于基于RPM的系统(如CentOS/RHEL): sudo yum install ntp
配置: 通常,系统默认的ntp.conf配置文件已经包含了合适的NTP服务器列表。若需要自定义,编辑 /etc/ntp.conf 文件。
2、启动并启用服务:
sudo systemctl start ntpd
sudo systemctl enable ntpd
3、验证服务状态: sudo systemctl status ntpd
使用 timedatectl 命令
timedatectl 是一个方便的命令行工具,用于管理和查看系统时钟与时间设置。在许多现代Linux发行版中,它已经被集成,可以用来启用或禁用系统时钟同步:
1、启用NTP同步: sudo timedatectl set-ntp true
2、检查当前状态:timedatectl status
输出中应显示 System clock synchronized: yes,表示NTP同步已启用。
使用 chrony 服务
chrony 是另一种高效且精准的NTP客户端和服务端软件,尤其适用于网络环境不稳定或频繁改变网络环境的系统。某些Linux发行版(如Fedora、RHEL/CentOS 7及更高版本)可能预装了chrony而非传统的ntpd。
1、安装(如果未预装):
sudo apt install chrony # Debian-based systems
sudo yum install chrony # RPM-based systems
2、配置npt同步服务: 编辑 /etc/chrony/chrony.conf 文件,添加或修改NTP服务器。
3、启动并启用服务:
sudo systemctl start chronyd
sudo systemctl enable chronyd
4、检查服务状态: sudo chronyc sources -v
此命令显示当前连接的NTP源及其状态,确认系统是否成功同步。