不使用sshpass, 使用用户名,非交互式进行scp或sftp
时间: 2023-06-15 21:06:00 浏览: 145
可以使用公钥认证来实现非交互式的SCP或SFTP传输,具体步骤如下:
1. 在本地机器上生成公钥和私钥:
```
$ ssh-keygen -t rsa
```
2. 将生成的公钥复制到目标机器的`~/.ssh/authorized_keys`文件中:
```
$ ssh-copy-id user@remote_host
```
3. 在本地机器上使用SCP或SFTP传输文件时,不需要输入密码,可以直接传输:
```
$ scp file user@remote_host:/path/to/destination/
$ sftp user@remote_host
```
注意,确保目标机器上的`~/.ssh/authorized_keys`文件的权限设置为`600`或`644`,否则会导致公钥认证失败。
相关问题
使用用户名,非交互式进行scp或sftp
可以使用以下命令进行非交互式的SCP或SFTP:
1. SCP:
```
scp <local_file_path> <remote_username>@<remote_host>:<remote_path>:/<remote_file_path>
```
例如,将本地文件 `test.txt` 复制到远程主机的 `/home/user1` 目录下:
```
scp test.txt user1@remotehost:/home/user1/
```
2. SFTP:
```
sftp <remote_username>@<remote_host>:<remote_path>:/<remote_file_path> < <local_file_path>
```
例如,将远程主机的 `/home/user1/test.txt` 文件下载到本地:
```
sftp user1@remotehost:/home/user1/test.txt < test.txt
```
请注意,使用非交互式的SCP或SFTP时,需要提供远程主机的用户名和密码,或者使用SSH密钥进行身份验证。建议使用SSH密钥进行身份验证,以提高安全性。
使用用户密码,非交互式进行scp或sftp
使用用户密码进行非交互式的scp或sftp操作可以通过使用sshpass命令来实现。sshpass是一个Linux命令,可以提供ssh连接的密码,从而实现自动化操作。
下面是一个使用sshpass进行scp操作的示例:
```
sshpass -p 'password' scp /path/to/local/file user@remote:/path/to/remote/file
```
其中,-p选项指定密码,/path/to/local/file是本地文件路径,user是远程服务器的用户名,remote是远程服务器的IP地址或主机名,/path/to/remote/file是远程服务器上文件的路径。
同样,可以使用sshpass进行sftp操作,示例如下:
```
sshpass -p 'password' sftp user@remote:/path/to/remote/file /path/to/local/file
```
其中,/path/to/remote/file是远程服务器上文件的路径,/path/to/local/file是本地文件路径。
阅读全文