我如何scp给用户我没有密码?

这是情况。 我有用户访问服务器和根访问相同的服务器。 我想为服务器上没有密码信息的用户编辑文件。 ssh'ing作为根被禁用,所以我通常ssh作为我的用户,然后苏根。 然后,我cd到感兴趣的主目录的用户,然后苏感兴趣的用户(提供感兴趣的用户有shell访问)。 如果用户没有对服务器的shell访问权限,我不得不以root身份修改这些文件,这让我不敢恭维。 所以我的第一个问题是,如果用户没有shell访问权限,我怎么能安全地修改用户的文件而不用root?

我的第二个问题涉及到从我的桌面使用graphicsSFTP程序将文件传输到用户的帐户。 由于我没有感兴趣的用户login信息(并且用户可能没有shell访问权限),我不能直接访问用户的帐户,也不能以root身份login。 因此,我使用我的graphicsSFTP程序来进入我的用户帐户的主目录在服务器上。 然后,我通过SFTP程序将文件传输到服务器上的用户帐户的主目录,然后以root身份从我的用户主目录手动将它们复制到感兴趣的主目录用户。 显然这是低效率的,我渴望得到更好的解决scheme。 它是什么?

注意:我意识到我可以使用命令行scp程序将文件直接转移到感兴趣的home目录的用户,但我想使用graphics化的SFTP程序。

在你自己的机器上设置一个rsa / dsa密钥对(ssh-keygen -t rsa),然后把公钥添加到有问题的用户的〜/ .ssh / authorized_keys文件中。 如果〜/ .ssh不存在 – 使用用户拥有的700个权限创build它。

那么你应该能够以该用户的身份使用密钥login(无密码)

http://winscp.net/eng/docs/faq_su

WinSCP支持的协议(SFTP,FTP和SCP)都不允许在文件传输会话中更改用户。 您需要以正确的用户开始会话。

在某些情况下(使用Unix / Linux服务器),在文件传输会话开始之前,您可以在login后直接使用sudo命令来更改用户。

SFTP和SCP协议允许这样做,但实际的方法依赖于平台。

su -c bash –login应该为用户提供一个shell,而不pipe他们的默认(禁用)loginshell。 你也可以在自己的〜/ .ssh / authorized_keys文件中添加一行,这样就可以在不使用密码的情况下login。

Upvoted未知的WinSCP和Brent的SSH密钥解决scheme。

只是说,你可以一起使用这两个解决scheme。

如果您不确定如何生成密钥,可以使用PuTTyGen ,WinSCP将很乐意使用它生成的格式。

如果用户没有shell访问权限,su有一个-s选项来指定要使用的shell。 例如:

 su -s /bin/bash www-data 

如果我理解你的问题,最简单的答案就是忽略SSH问题,而将问题视为权限问题。 当用户想要共享对文件的访问权限时,他们被放到同一个组中,并且设置文件的权限以便组访问。