我刚尝试使用rsync将一些文件复制到远程主机,在执行此操作后,我无法再通过SSH连接到远程主机。
我使用的命令是:
rsync -av /foo/bar/ user@remotehost:.
一切似乎都运行良好,但现在我的远程主机将不接受我的私钥文件。我怀疑是主文件夹,或者至少是.ssh文件夹已被擦除,但我无法解决原因。
我在2015年发现了一个类似的帖子。有没有其他人经历过这个?本地主机是安装在ProxMox中的Linux Mint 18.3 VM,远程机器是物理Linux Mint 18.3机器。
类似问题here。
答案 0 :(得分:2)
好的,我发现了发生了什么事。家用驱动器和.ssh文件夹都很好,没有像我原先想象的那样被擦除。所以我使用以下命令在调试模式下运行sshd:
# /usr/sbin/sshd -d -p 2222
尝试通过调试端口登录后,我得到了这个输出:
***
debug1: temporarily_use_uid: 1000/1000 (e=0/0)
debug1: trying public key file /home/user/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /home/user
debug1: restore_uid: 0/0
Failed publickey for user from 127.0.0.1 port 37422 ssh2: RSA
SHA256:xxxx
Connection closed by 127.0.0.1 port 37422 [preauth]
***
身份验证被拒绝:目录/家庭/用户的错误所有权或模式是问题所在。我检查了/ home / user文件夹的权限,确定它已从755更改为777,这恰好与源文件夹(/ foo / bar)具有相同的权限
当您在主目录上拥有组写访问权限时,SSHD不喜欢它。通过再次更改权限来解决此问题:
# chmod 755 /home/user
查看rsync手册页:
源上的尾部斜杠会更改此行为,以避免在目标位置创建其他目录级别。您可以将源尾随/视为含义"复制此目录的内容"而不是"按名称",复制目录,但在这两种情况下,包含目录的属性都会传输到目标上的包含目录。换句话说,每个以下命令以相同的方式复制文件,包括它们的设置/ dest / foo的属性
rsync -av / src / foo / dest
rsync -av / src / foo / / dest / foo
因此,为避免更改目标目录权限并可能弄乱SSH身份验证:
rsync -av /foo/bar/* user@remotehost:.
或..在我的情况下,实际上最好这样做:
rsync -av /foo/bar user@remotehost:.
希望能帮到别人!
答案 1 :(得分:0)
“ rsync -e” ssh -i testing.pem“ -rlpEAXogDtSzh -P -x --exclude-from =” $ EXCLUDEFILE“ --rsync-path =” sudo rsync“ --verbose --progress / azureuser @ $ TARGETVM:/ home / azureuser / testing-folder“,您必须更改目标路径,然后才能更改目录权限,如果无法使用root或密码登录,请按照本教程的说明使用pem密钥文件进行迁移 https://docs.microsoft.com/en-gb/archive/blogs/keithmayer/cloud-to-cloud-migrating-ubuntu-linux-virtual-machines-to-microsoft-azure-from-amazon-aws