【备份】两台服务器之间如何设置无密码ssh访问

假设第一台ip是1.1.1.1,登录第一台SSH的用户名是root1,密码是1111

假设第二台ip是2.2.2.2,登录第一台SSH的用户名是root2,密码是2222

假设要

生成公钥key

在第一台服务器上生成 SSH 密钥对(如果你还没有密钥对),打开一个终端或命令行界面,然后运行以下命令:

-t rsa是指的是rsa类的key

ssh-keygen -t rsa

根据提示操作,可以选择默认设置,这会在默认的 .ssh 目录中创建一个新的 SSH 密钥对(一个私钥和一个公钥)。记得设置一个强密码或者选择“无密码”,但请注意无密码设置虽然方便但安全性较低。

公钥和私钥保存在该目录下

/root/.ssh   

#id_rsa      是私钥
#id_rsa.pub  是公钥

将公钥复制到服务器

方法一:手动登录第二台的服务器,进入该目录,打开 authorized_keys 文件

/root/.ssh

将上面获取到的id_rsa.pub文件的内容粘贴到 authorized_keys 文件后即可。

方法二:或者使用命令发送

ssh-copy-id user@2.2.2.2

测试无密码 SSH 登录

ssh root@2.2.2.2

输入一次密码后,再之后就不需要输入

其他错误提示解决

执行:ssh root@2.2.2.2

提示:ssh_dispatch_run_fatal: no matching host key type found

解决:

  1. 修改服务器的SSH守护进程配置
    • 如果你可以控制服务器(2.2.2.2),且拥有相关的权限,可以编辑 /etc/ssh/sshd_config 文件,添加或启用一个群晖NAS(第一台设备)支持的密钥算法。
    • 比如添加 HostKeyAlgorithms +ssh-rsa 或者其它支持的算法。
    • 完成编辑后,重新启动SSH服务来应用更改。
  2. 具体操作如下:
    • 你可以使用任何文本编辑器来编辑 /etc/ssh/sshd_config
    • 在编辑器中,找到 HostKeyAlgorithms 行。如果没有这样的行,则可以添加HostKeyAlgorithms ssh-rsa到文件的末尾。然后保存退出
   HostKeyAlgorithms ssh-rsa

重启ssh服务

随后,你需要重启 SSH 服务以使更改生效。这可以通过以下命令完成:

systemctl restart sshd

或者如果你用的是没有 systemctl 的系统:

service ssh restart


输入ssh root@2.2.2.2.提示
The authenticity of host '2.2.2.2 (2.2.2.2)' can't be established.
RSA key fingerprint is SHA256:tUcjlxxxxxxxxzxg+IAxxxx8/Hk1xxx6E.
Are you sure you want to continue connecting (yes/no)? 

此提示意味着你的SSH客户端没有在之前的连接尝试中遇到过这个服务器,它不在你的SSH已知主机列表中。出现这个消息是因为SSH客户端试图验证服务器的身份。

服务器的 RSA 密钥指纹是一串字符,用于唯一标识服务器。当你通过 SSH 第一次连接到一个服务器时,SSH 客户端会询问你是否信任该服务器的指纹。

如果你相信这是你想要连接的正确服务器(通常,你会从服务器管理员或通过其它安全渠道获知这个指纹),你应该输入 yes 继续连接。这表示你信任这个服务器,SSH 客户端会把这台服务器的密钥添加到你的本地知名主机文件(~/.ssh/known_hosts)里,以后不会再提示这一信息。

如果你输入 yes 并继续,将会如下操作:

  1. 确认指纹 [匹配管理员提供的或者你以前记录的指纹]。
  2. 输入 yes 并按下 Enter 键以接受密钥。

如何避免每次都输入密码

在第二台服务器2.2.2.2上,确保服务器上的 SSH 守护进程配置文件 /etc/ssh/sshd_config 允许使用公钥认证。以下行需要是这样设置的:

PubkeyAuthentication yes

如果你更改了任何设置,需要重启 SSH 服务。

systemctl restart sshd

或者如果你用的是没有 systemctl 的系统:

service ssh restart

使用密钥认证除了减少登录时的繁琐步骤,更能提高安全性。只要私钥安全,无人能通过密码破解方式获取服务器访问权。但一定要保护好你的私钥,不要让它泄露。

将VPS云服务器数据备份到群晖nas本地

群晖比较特殊,需要另外配置

先将nas里面板设置-文件服务-rsync服务打开,端口配置好

将/etc/default目录下的rsync文件打开,将RSYNC_ENABLE改成true,保存退出

RSYNC_ENABLE=true

将nas里的etc/rsyncd.conf配置好,群晖本身会在根目录生成Netbackup文件夹,但具体使用规则不太明白,所以另外单独配置模块

另外还需要把文件里的其他配置用#注释掉

#motd file = /etc/rsyncd.motd
log file = /var/log/rsyncd.log   
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
use chroot = no
uid = root
gid = root



[test1]         #这里填模块的名字
path = /volume1/Backup/VPS/rsync  #这里是nas本地的目录
list = yes
read only = no    #取消只读
ignore errors     #忽略错误

按照上面配置好ssh无密码登录后,下面这些命令可以使用

显示nas本地的test模块指向的/volume1/Backup/VPS/rsync文件夹的文件:

rsync -avzh 1.1.1.15::test1
显示:

root@Kimi-Main:~# rsync -av 100.100.1.15::test1

receiving incremental file list
drwxr-xr-x          4,096 2024/02/18 20:15:44 .
-rw-r--r--              0 2024/02/18 20:15:32 1p-2
-rw-r--r--              0 2024/02/18 03:16:25 rsync-1panel

sent 54 bytes  received 91 bytes  58.00 bytes/sec
total size is 0  speedup is 0.00

将VPS的/backup/rsync/发送到1.1.1.15的nas的test1模块文件夹里(指向的是上面提到的/volume1/Backup/VPS/rsync)

rsync -avzh /backup/rsync/ 1.1.1.15::test1
注意:【/backup/rsync/】可以和【1.1.1.15::test1】换位置,rsync 命令,前面的目录复制到右边的目录
命令格式是 rsync 空格 -avzh选项 空格 源目录 空格 目标目录
注意2:如果这里1.1.1.15::test1少了一个冒号“:”只有1个,将会使用ssh进行连接,需要输入密码,会麻烦
注意3:源目录/backup/rsync/最后如果没有斜杠“/”,在备份过去的时候会在根目录下新建一个rsync文件夹,加了斜杠是不包含该文件夹的意思
终端显示:

root@Kimi-Main:~# rsync -avzh /backup/rsync/ 1.1.1.15::test1

sending incremental file list
./
1p-2
test-1pnale

sent 161 bytes  received 60 bytes  88.40 bytes/sec
total size is 0  speedup is 0.00

如果要加密码

在etc/rsyncd.conf文件里,模块的下方,添加一行:

secrets file = /etc/rsyncd.secrets 

#/etc/rsyncd.secrets 路径的密码是明文,权限600才能使用:

#chmod 600 /etc/rsyncd.secrets

如果要避免每次都输入密码,再在新建一个文件,/etc/rsync.password 将密码也输入到该文件里,

rsync -av --password-file=/etc/rsync.password root@1.1.1.15::test1

如果需要完全同步(包括删除操作)

添加命令–delete即可

rsync -avzh --delete /backup/rsync/ 1.1.1.15::test1

其他备份文章

Blibili【【司波图】稳定异地备份不是梦,最“简单”的文件同步软件RSYNC实战教学攻略】

留下评论