使用ssh远程连接

ssh程序分为客户端服务端,利用ssh程序可以实现本地电脑安全连接远程主机

名词解析:

  • 客户端:作为访问者,运行在本地电脑的ssh程序
  • 服务端:作为被访问者,运行在远程主机的ssh程序
  • 本地电脑:泛指用户的电脑,例如:笔记本电脑
  • 远程主机:泛指服务器,例如:阿里云服务器

安装 ssh 程序

  • 客户端程序 sudo apt-get install openssh-client
  • 服务端程序 sudo apt-get install openssh-server

服务端程序依赖客户端程序

生成密钥

  1. 执行生成密钥的客户端命令 ssh-keygen(使用默认参数)
  • 默认密钥路径:~/.ssh/id_rsa
  • 默认注释:空
  1. 根据提示输入指定的密钥文件路径(建议使用存放在默认目录
    ~/.ssh
  2. 根据提示不输入密码短语(passphrase)

密码短语:

  • 使用密码短语,以后每次使用密钥都会被询问输入密码短语,很麻烦,也难记。
  • 如果使用密码短语,可以使用ssh-agent程序记住密码短语,避免每次被询问输入密码短语。
  • 如果不用密码短语,要小心别人从你硬盘偷走私钥

不用密码短语更简单,私钥被偷走的可能性很低

上传公钥到服务端

如果公钥路径为:~/.ssh/id_test.pub,输入下面命令

ssh-copy-id -i ~/.ssh/id_test.pub -p 22 $user@$hostname

ssh-copy-id 会将公钥保存到远程主机的文件(~/.ssh/authorized_keys),如果没有这个文件,则自动创建。
~/.ssh/authorized_keys是远程主机$user用户目录中的文件。

禁用密码登录服务端

修改服务端配置文件/etc/ssh/sshd_config

# 更改端口
Port 2222
# 禁止密码登录
PasswordAuthentication no
# 不能没有密码
PermitEmptyPasswords no
# 
ChallengeResponseAuthentication no

登录服务端

密码登录:

ssh -p 2222 $user@$hostname
# 根据提示输入帐号和密码

私钥登录:

ssh -p 2222 -i /path/to/private-key $user@hostname

第一次连接的远程主机,ssh会“询问”你再次确认。确认后会将远程主机的信息保存在~/.ssh/known_hosts文件,以后的连接就不会再“询问”了。


参考

  • https://wiki.archlinux.org/index.php/Secure_Shell_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
  • https://wiki.archlinux.org/index.php/SSH_keys_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

你可能感兴趣的:(使用ssh远程连接)