Ubuntu下使用SSH 命令用于登录远程桌面

时间:2022-07-08 23:15:13

https://blog.csdn.net/yucicheung/article/details/79427578

问题描述

做DL的经常需要在一台电脑(本地主机)上写代码,另一台电脑(服务器,计算力强)上进行训练,我们在两台电脑上都安装的是Ubuntu16.04,为了在local主机下也可以随时跑程序,调代码,同时省流量而且迅速(不考虑这些的话用teamviewer也行),所以在两台电脑主机上进行SSH配置。
基础:ssh命令连接
step1:SSH程序的安装

确保在服务器上安装好了openssh-server程序,在本地主机上安装好了openssh-client程序。

sudo apt install openssh-client #本地主机运行此条,实际上通常是默认安装client端程序的
sudo apt install openssh-server #服务器运行此条命令安装

step2:服务器启动ssh服务

以下命令都只针对服务器端(server only)。
一般服务器上安装ssh完成后,会自动启动ssh服务,并且默认随系统启动,如果没有,请手动启动:

sudo /etc/init.d/ssh start #服务器启动ssh-server服务,

其他命令:

sudo /etc/init.d/ssh stop #server停止ssh服务
sudo /etc/init.d/ssh restart #server重启ssh服务

step3:查询服务器的ip地址

在服务器终端运行以下命令:

ifconfig #查询ip地址,在返回信息中找到自己的ip地址

step4:在本地主机端ssh远程登录服务器

这一步需要知道服务器的用户名(我的服务器名字也是yucicheung)及IP地址。
在本地主机上运行以下命令:
用户端连接服务器用于登录远程桌面(以下user时远程主机的用户名)

ssh qian@10.170.11.147  #用户名@IPdress
#或
ssh -l qian@10.170.11.147
# 如果需要调用图形界面程序
ssh -X qian@10.170.11.147

初次登录时会出现以下信息,请记住要输入的密码是服务器主机本身的登陆密码

Ubuntu下使用SSH 命令用于登录远程桌面

以上表示连接成功,且命令提示副前的用户名@主机名由本地主机变成服务器的信息,即表明现在该终端所有的命令都是在服务器中执行

本地主机端登录相关的其他命令:

  • 如果服务器的SSH服务没有开启在22端口,那么SSH链接时则需要用-p指定端口(如202):
ssh -p  yucicheung@10.170.11.147
#或
ssh -l yucicheung -p 10.170.11.147

step5:退出远程登录

用Ctrl+D或者

exit

进阶:利用公钥省去密码输入

每次登录远程主机都需要输入密码是很不便捷的,如果要加速这一步骤,可以利用密钥对进行连接,主要思路是:生成一对公钥私钥,私钥在local主机上,公钥在远程服务器上,每次建立ssh连接自动检查密钥对是否匹配。

step1 生成密钥对

ssh-keygen -t rsa #-t表示选择类型,类型为rsa
简化命令:ssh-keygen
执行以后会在$HOME目录下生成一个.ssh文件夹,其中包含私钥文件id_rsa和公钥文件id_rsa.pub

step2 复制公钥至服务器


方法一:ssh-copy-id -i .ssh/id_rsa.pub user@host   #用户名@IP  将地址拷贝到远程端
简化命令:ssh-copy-id user@host
 
 
方法二:
# 登录远程服务器
ssh yucicheung@10.170.11.147
# 在服务器上创建.ssh文件夹,如果已经存在就跳过此步
mkdir .ssh
# 为了保证.ssh文件夹的安全,应取消其他用户对文件夹的所有权限
chmod .ssh
# 退出登录
exit
# 本地主机的公钥复制到远程服务器,作为已认证密钥
scp /home/yucicheung/.ssh/id_rsa.pub yucicheung@10.170.44.206:/home/yucicheung/.ssh/authorized_keys

在进行以上配置以后,再进行连接时,就可以免去口令(密码)的输入了。

配置别名:

每次都输入 `ssh -p port user@remote`,时间久了会觉得很麻烦,特别是当 `user`, `remote` 和 `port` 都得输入,而且还不好记忆

而 **配置别名** 可以让我们进一步偷懒,譬如用:`ssh mac` 来替代上面这么一长串,那么就在 `~/.ssh/config` 里面追加以下内容:

Host mac
HostName ip地址
User your_username
Port

保存之后,即可用 `ssh mac` 实现远程登录了,`scp` 同样可以使用

SCP远程拷贝文件

# 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
# 注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py

# 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
scp -P port user@remote:Desktop/01.py 01.py

# 加上 -r 选项可以传送文件夹
# 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
scp -r demo user@remote:Desktop

# 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
scp -r user@remote:Desktop demo

选项   含义
-r    若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-P   若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口