目的
通过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_dir
例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录