每天都要跟服务器打交道,如何登录到远程服务器上去呢?通常有两种方法:
通过专用软件登录,常用的有:
Xshell, 收费软件(支持平台:Windows, Mac, Linux等)
SecureCRT,收费软件(支持平台:Windows)
通过终端利用SSH连接,前提你要是Unix-like系统,如:
Mac,自带终端或者iTerm2(推荐)
Linux(Ubuntu, Centos等)
Windows 10安装Ubutun子系统(具体可以百度搜索安装方法),推荐用自带的Windows Terminal
1 什么是SSH
SSH是Secure Shell的缩写, 由IETF的网络小组(Network Working Group)所制定, 是建立在应用层基础上的安全协议。
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
不同主机间安全通信时进行SSH认证有2种方式:
a. 基于密码的认证:每次登录时都要输入用户名和密码,由于密码在网上传输,存在被攻击的风险;
b. 基于密钥的安全认证:配置完成后可以实现免密登录,这种方式更加安全和方便——不需要在网络上传递口令,只需要一次配置。常见的GitHub网站的SSH方式就是通过密钥进行的。
2 SSH登录命令
在终端内输入以下命令,其中@符号前面的username是用户名,后面的host是远程主机的IP地址:
$ssh username@host
3 配置SSH免密登录
生成密钥对,在终端中输入如下命令,注意美元符号$代表命令提示符,下同。
$ssh-keygen
一路回车,在~/.shh目录下生成了2个文件:id_rsa(私钥,放在本地机器上), id_rsa.pub(公钥,放到要远程登录的机器上)
然后通过密码形式登录目标服务器, 进入~/.ssh目录, 新建一个名为authorized_keys的文件,将id_rsa.pub中的内容拷贝到其中。
ssh登录,发现还是需要输入登录密码,这是因为还需要正确配置文件的权限。
a. 对于.ssh目录以及其内部的公钥、私钥文件,当前用户至少要有执行权限,其他用户最多只能有执行权限;
b. 对于普通用户,建议设置成600权限:
$chmod 600 id_rsa
$chmod 600 authorized_keys
c. 对root用户,建议设置成644权限
$chmod 644 id_rsa
$chmod 644 authorized_keys
至此,再次通过ssh命令远程登录服务器,以及本地电脑与服务器之间互相拷贝文件,都不再需要输入密码了。
机器间拷贝文件的scp命令:
本地文件拷贝到服务器
$scp file.txt username@host:/home/username/file.txt,这个命令会将本地电脑上的file.txt文件拷贝到服务器上的/home/username/目录下
服务器文件拷贝到本地
$scp username@host:/home/username/file.txt file.txt,这个命令会将服务器上的file.txt拷贝到本地电脑的当前目录下。
原文链接:https://cloud.tencent.com/developer/article/1749458