假设第一台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
解决:
- 修改服务器的SSH守护进程配置:
- 如果你可以控制服务器(
2.2.2.2
),且拥有相关的权限,可以编辑/etc/ssh/sshd_config
文件,添加或启用一个群晖NAS(第一台设备)支持的密钥算法。 - 比如添加
HostKeyAlgorithms +ssh-rsa
或者其它支持的算法。 - 完成编辑后,重新启动SSH服务来应用更改。
- 如果你可以控制服务器(
- 具体操作如下:
- 你可以使用任何文本编辑器来编辑
/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
并继续,将会如下操作:
- 确认指纹 [匹配管理员提供的或者你以前记录的指纹]。
- 输入
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