ssh使用别名和实现免密登录
ssh远程登录可以输入命令
$ ssh user_name@ip_addr/domain_name
# usr_name是用户名,ip_addr是ip地址,domain_name是域名
当不输入user_name的时候会默认使用本地用户名。
然后输入密码即可远程登录linux机器。
- 如何设置免密登录? 具体方法是将自己本地的公钥导入在服务器端~/.ssh/authorized_keys 首先在本地生成公钥和私钥
$ ssh-keygen
然后在本地会生成.ssh目录,目录中会生成id_rsa和id_rsa.pub文件,我们看一下目录结构
$ tree .ssh
.ssh
├── config
├── id_rsa
├── id_rsa.pub
└── known_hosts
0 directories, 4 files
config是ssh配置文件 known_host是保存到公钥,ssh会把每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts 可以输入ssh-copy-ip直接上传公钥,也可以连接服务器以后直接复制id_rsa.pub粘贴到~/.ssh/authorized_keys文件中
$ ssh-copy-id user_name@ip_addr/domain_name
运行这条命令后服务器会在家目录下生成.ssh目录,把本地公钥写入authorized_keys文件,这里会需要再输入一次密码。 2. 如何为服务器设置别名?
在本地.ssh目录下写入config文件
然后可以通过
$ ssh alias_name
达到
$ ssh user_name@ip_addr/domain_name
的效果,并且实现免密登录。 ssh相关配置 设置是否可以使用密码登录,对指定用户是否可以使用密码登录? 禁止密码登录的目的是为了安全,可以设置只允许密钥登录,这样即使密码被泄露别人也无法登录。可以通过修改配置文件实现。
$ sudo vi /etc/ssh/sshd_config
PasswordAuthentication 默认是yes,可以改为no,以禁止密码登录,但是必须注意,更改为no前必须确保已经设置通过秘钥实现免密登录。 对指定用户的设置可以在最后加上
Match User user_name
PasswordAuthentication yes/no
#所有和此用户相关的配置都可以放在这里
#user_name是用户名
比如同一个系统中有多个用户,可以配置所有用户可以密码登录,而root用户的PasswordAuthentication设置为no,root用户只能用秘钥登录保证安全。 端口设置
Port port_number
#port_number是想更改的端口号
设置以后,务必运行 $ sudo sudo service ssh restart 重启ssh服务,以使配置生效。 更改端口后连接Linux需要使用
$ ssh user_name@ip_addr/domain_name -p port_number
或者在.ssh/config中加入Port,继续使用别名
scp传输文件和文件夹
#向远端传文件
$ scp [-r] dir/file_name user_name@ip_addr/domain_name:dir
#从远端往本地传文件
$ scp [-r] user_name@ip_addr/domain_name:dir/file_name dir
usr_name是用户名 ip_addr是ip地址 domain_name是域名 当不输入user_name的时候会默认使用本地用户名 dir是文件目录 file_name是文件名 如果传输的是文件夹需要加上-r参数,传送文件不用
同样的,每次输入ip地址或者域名都太复杂了,刚刚的~/.ssh/config文件还在,完全可以执行
$ scp [-r] dir/file_name alias_name:dir
$ scp [-r] alias_name:dir/file_name dir
传输到本地时可以使用相对路径,当前目录可以用.替代,上级目录可以用..替代 进行传送文件。 远端dir如果值为空,默认传输到服务器用户的家目录下
$ scp [-r] dir/file_name alias_name:标签:name,登录,ip,简单,ssh,使用,dir,user From: https://blog.51cto.com/u_14682436/6131305
# 等同于#
$ scp [-r] dir/file_name alias_name:~