目录
目的
通过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/ 目录