在Linux上使用ssh和scp命令进行安全文件传输

算法架构师 2022-05-05 ⋅ 20 阅读

在Linux系统上,我们经常需要在不同的服务器之间传输文件。为了保证数据的安全性,我们可以使用ssh(Secure Shell)和scp(Secure Copy)命令进行安全的文件传输。

ssh命令

ssh命令是一种通过加密的方式在不安全的网络上安全地传输数据的协议。通过ssh命令,我们可以远程连接到另一台计算机,并在远程计算机上执行命令。

连接远程服务器

要连接远程服务器,我们可以使用以下命令:

ssh username@remotehost

其中,username是远程服务器的用户名,remotehost是远程服务器的主机名或IP地址。执行以上命令后,系统会要求输入远程服务器的密码。

使用公钥认证登录

为了避免每次连接远程服务器都要输入密码,我们可以使用公钥认证登录。

首先,在本地生成一对公钥和私钥。执行以下命令:

ssh-keygen -t rsa

系统会要求指定保存公钥和私钥文件的路径,默认是~/.ssh/id_rsa。可以直接按回车键使用默认路径。

在生成公钥和私钥后,我们需要将公钥文件(默认路径为~/.ssh/id_rsa.pub)中的内容复制到远程服务器的~/.ssh/authorized_keys文件中。

cat ~/.ssh/id_rsa.pub | ssh username@remotehost "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

之后,我们就可以使用以下命令无需密码直接登录远程服务器:

ssh username@remotehost

在ssh会话中执行命令

在ssh会话中,我们可以执行任意的命令。例如,要在远程服务器上执行ls命令,可以使用以下命令:

ssh username@remotehost ls

scp命令

scp命令用于在本地和远程服务器之间安全地复制文件。

从远程服务器复制文件到本地

要从远程服务器复制文件到本地,可以使用以下命令:

scp username@remotehost:/path/to/remote/file /path/to/local/directory

其中,username是远程服务器的用户名,remotehost是远程服务器的主机名或IP地址,/path/to/remote/file是远程服务器上要复制的文件的路径,/path/to/local/directory是本地要保存的目录。

从本地复制文件到远程服务器

要从本地复制文件到远程服务器,可以使用以下命令:

scp /path/to/local/file username@remotehost:/path/to/remote/directory

其中,/path/to/local/file是本地要复制的文件的路径,username是远程服务器的用户名,remotehost是远程服务器的主机名或IP地址,/path/to/remote/directory是远程服务器上要保存文件的目录。

通过scp命令复制整个目录

要通过scp命令复制整个目录,可以使用以下命令:

scp -r username@remotehost:/path/to/remote/directory /path/to/local/directory

其中,-r选项表示递归地复制整个目录。

总结

在Linux系统上使用ssh和scp命令可以实现安全的文件传输。通过ssh命令,我们可以远程连接到另一台计算机并执行命令,还可以使用公钥认证登录,避免重复输入密码。通过scp命令,我们可以在本地和远程服务器之间复制文件,甚至可以复制整个目录。

这些命令在Linux系统上使用广泛,是进行安全文件传输的理想选择。希望本文对你在Linux上使用ssh和scp命令进行安全文件传输有所帮助。


全部评论: 0

    我有话说: