SFTP自动登录

SFTP自动登录

我想知道如何使用 sftp 自动连接,并在同一命令中将密码作为参数,以自动登录并执行一次。

例子:

我想把它写成一个脚本,并尝试用一句话来完成这项任务。

干杯,

答案1

有四种方法可以实现无密码 ssh/scp:

  1. 在客户端上创建一个新的无密码 ssh 密钥,并将其添加到authorized_keys服务器上。

  2. 如上所述,但在密钥上设置密码,并ssh-agent在运行 scp 之前使用它来解锁。

  3. 使用 ssh 连接共享(可能需要进行适当的ControlPersist设置)在 scp 运行之前登录到服务器。 scp 将重用相同的连接并且不需要密码。

  4. 使用一些狡猾的脚本来输入密码,但 ssh/scp 积极阻止这种行为,因此它并不像您希望的那么容易。

我强烈建议您研究前两个选项(选项 2 更安全),如果authorized_keys 不可用,则研究选项 3。有很多地方记录了如何做到这一点。

选项 4 是可能的(我看到其他人已经发布了解决方案),但您需要注意,这会将您的密码泄露给机器的其他用户和/或任何可以读取您的脚本的人。 ssh 密钥受到除 root 用户之外的所有用户的保护,并且受密码短语保护的密钥甚至受到 root 用户的保护(除了 ssh-agent 黑客之外)。

答案2

使用SSH密码

sshpass -p <password> sftp user@host

答案3

运行以下命令:

ssh-keygen -t rsa -b 2048

然后

touch ~/.ssh/config

现在编辑配置,如下所示:

# host-specific options
Host enigma
    HostName mydomain.com
    Port 2547
    ServerAliveInterval 120
User YOURUSERNAME
    TCPKeepAlive Yes

现在连接

ssh-copy-id [email protected]

您应该能够使用配置文件中的主机名连接到服务器。 IEssh enigma

我的配置文件中有大约 20 个连接,并且都是短引用,因此我不必每次都输入域和密码。

这样做的安全缺陷是,除非您开始创建不同的主机文件,否则所有 SSH 连接都会受到影响。都在一个文件中。由一个密码保护。因此,如果您将 20 个连接存储到一个文件,那么如果该密码被泄露,那么所有 20 个连接也会被泄露。

我使用几个主机文件,个人、工作和杂项,如果密码泄露,那么问题不大

相关内容