ssh 怎么自动输入密码
时间: 2023-08-08 10:10:08 浏览: 57
可以使用公钥认证来实现 SSH 自动登录,而无需输入密码。公钥认证的原理是:在客户端和服务器之间建立一对密钥,将公钥放在服务器上,将私钥保存在客户端。当客户端连接服务器时,服务器会向客户端发送一段随机字符串,客户端使用私钥对该字符串进行加密,并将加密后的字符串发送给服务器。服务器收到加密后的字符串后,使用事先保存的公钥进行解密,如果解密成功,则认为客户端是合法的,允许其自动登录。
以下是具体步骤:
1. 在客户端生成密钥对(公钥和私钥):
```
ssh-keygen -t rsa
```
2. 将公钥复制到服务器上:
```
ssh-copy-id username@remote_host
```
3. 完成以上步骤后,再次连接服务器时,就会自动使用私钥进行认证,而无需输入密码:
```
ssh username@remote_host
```
注意:在复制公钥到服务器时,需要输入服务器的密码。但是,完成此步骤后,就可以自动登录了,无需再输入密码。
相关问题
python ssh自动输入密码
可以使用 paramiko 库来实现 SSH 自动输入密码的功能。下面是一个示例代码:
```python
import paramiko
hostname = 'example.com'
port = 22
username = 'user'
password = 'password'
command = 'ls'
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname, port, username, password)
stdin, stdout, stderr = ssh_client.exec_command(command)
print(stdout.read().decode())
ssh_client.close()
```
在上面的示例中,我们使用 paramiko 库连接到远程服务器,并执行了一个命令。在连接时,我们需要提供服务器的主机名、端口号、用户名和密码。在这里,我们直接将密码硬编码到代码中,但是在实际使用中,你可能需要从文件或其他安全的存储介质中读取密码。
没有expect、sshpass以及公私钥认证的情况下ssh自动输入密码
在没有 expect、sshpass 和公私钥认证的情况下,可以使用 sshpass 命令来实现自动输入密码的功能。sshpass 命令可以通过命令行参数的形式来指定 SSH 登录的用户名和密码。
具体操作步骤如下:
1. 安装 sshpass 命令,Ubuntu 可以使用以下命令进行安装:
```
sudo apt-get install sshpass
```
2. 使用 sshpass 命令进行 SSH 登录,命令格式如下:
```
sshpass -p 'password' ssh user@host
```
其中,'password' 为 SSH 登录密码,user@host 为 SSH 登录的用户名和主机名。
例如,如果要登录用户名为 ubuntu,主机名为 example.com 的机器,并且密码为 123456,可以使用以下命令进行登录:
```
sshpass -p '123456' ssh ubuntu@example.com
```
注意事项:
1. 由于密码会明文显示在命令行中,因此不建议在公共场合使用。
2. sshpass 命令可能会被一些安全软件所拦截,因此在某些情况下可能无法使用。