Linux下通过SSH实现远程连接

目的

通过SSH服务,实现本机(Ubuntu)与远程服务器(腾讯云服务器提供的Ubuntu系统)之间的连接,能够在本地对服务器进行操作。

实现方法

实现SSH连接需要有SSH客户端和SSH服务端。Ubuntu貌似自带了SSH客户端。首先我们通过网页的方式登录上远程服务器(腾讯云的官网,控制台中可点击登录,输入账号和密码即可登录使用)。

在服务器上输入命令:

$sudo apt-get install openssh-server 

安装SSH服务端。

在客户端上,先切换为我们想要实现远程连接的本地用户账号,执行以下命令:

$su - user //切换用户
ssh-keygen -t rsa //生成密钥文件,之后不需要输入密码,按三次回车键即可。

将生成的公钥文件发送到服务端,这里要求输入服务端账号密码:

$scp .ssh/id_rsa.pub user@192.168.1.100:/home/user/

在服务端,自己重新建立如下文件夹。可能已经存在该文件夹,但是要注意该文件夹权限,如果该文件夹不属于你想要连接的服务端的用户,应该删除并在你想要连接的服务端用户上重新建立该文件夹,修改权限为700.

$mkdir -p /home/user/.ssh/

在服务端执行如下命令:

$mv /home/user/id_rsa.pub /home/user/.ssh/authorized_keys

这样之后就可以在服务端启动服务了

$service sshd start

在本地机器上进行连接:

$ssh user@192.168.1.100

这样子你就可以对服务器进行操作了!

注意事项

如果一开始在生成密钥时你使用了密码,那么以后每次连接都会要求你输入密码以成功读取私钥。要求如下:

$Enter passphrase for key'/home/user/.ssh/id_rsa':

一定要注意文件的权限问题,否则会出错。大概标准如下:

$chmod 700 .ssh
$chmod 600 authorized_keys

以上操作是通过密钥的方式来实现远程连接。如果直接通过用户口令的方式也是可以,那就不需要如上生成密钥的过程了。但是安全性不够高,而且每次连接都要输入密码比较麻烦。

如果要求只能通过密钥连接,那么可以修改服务端的sshd_config配置文件。将被注释掉的#PasswordAuthentication yes 改为PasswordAuthentication no 。但是这样之后将不可以通过腾讯云服务器控制台登入远程服务端。

文件传输

1.从服务器上下载文件

scp username@servername:/path/filename /var/www/local_dir(本地目录)

例如:

$scp root@192.168.0.101:/var/www/test.txt 

把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

2.上传本地文件到服务器

scp /path/filename username@servername:/path 

例如:

$scp /var/www/test.php root@192.168.0.101:/var/www/ 

把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

3.从服务器下载整个目录

$scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)

例如:

scp -r root@192.168.0.101:/var/www/test /var/www/

4.上传目录到服务器

$scp -r local_dir username@servername:remote_di

例如:

$scp -r test root@192.168.0.101:/var/www/ 

把当前目录下的test目录上传到服务器的/var/www/ 目录

留下评论