为了天天早 30 分钟下班,我这样登陆服务器

最近每天加班,最先就是 9 点下班,最晚试过 12 点出大厦门口的,踏出门口的第一步,灵魂不禁自主地问了本身一句:「我 TM 是谁」。linux

在回答不了这个「宇宙级」难题之余,我相信,有不少奋战在开发一线的同窗跟我同样,渴望在日落以前可以下一次早班,去打一场酣畅淋漓的球,或者去见一面思慕已久的女神。算法

为了改变现状,只能从平常的开发环节下手,优化一些耗时费力不讨好没收获的环节,让它可以更加「傻瓜式」地运做,给咱们留下更多地时间去解决核心问题或者完成开发进度。今天,我就想硬磕「登陆远程服务器」这个环节。有没有以为在公司电脑上保存明文的帐号密码不安全,记在脑子里又每次要输入,天天还得重复登陆好几回,还浪费脑容量。vim

看到这里,若是咱们仍是手动 ssh 加用户名密码和 ip 地址登录的,要好好反思一下了,咱们是程序猿,可以躺着毫不坐着!那有没有一种更方便快捷的方式呢?安全

# 还这样的登录的,要打 pp 了
$ ssh username@ip

# 紧接着输入密码
复制代码

有,那就是不用密码去登录服务器,天天能节省下 30 分钟,早点下班,多打一盘 LOL 或者是王者荣耀那也是极好的!bash

SSH 免密登陆

第一次登陆远程服务器的时候,终端交互上,linux 主机会提示是否记住「指纹」,也就是本机的身份。ssh 登陆远程主机的时候会携带本机的 ssh 公钥,本机的 ssh 公钥通常位于 $HOME/.ssh/,是公私钥成对出现的。若是没有,能够生成手动生成 rsa 算法加密的公私钥文件:服务器

$ ssh-keygen -t rsa -C "your_email_name@email_server.com"
复制代码

回车以后,会提示输入私钥的文件名,若是你直接回车,会自动默认生成为 $HOME/.ssh/id_rsa,同时会生成一份匹配的公钥文件 $HOME/.ssh/id_rsa.pub微信

若是有自定义私钥文件名,那么须要配置本机在 ssh 登陆远程服务器时候,指定到对应的私钥文件。打开 ssh 默认配置文件:ssh

# 若是不存在,则会自动建立
$ vim ~/.ssh/config
复制代码

追加入以下内容:优化

# remote_server_alias 是一个自定义远程服务器的别名,让你本身能清晰的区分
Host remote_server_alias	
	# 远程服务器的 ip 地址
	HostName xxx.xxx.xxx.xxx
	# 远程登陆时候默认用户名
	User root
	# ssh 所使用端口,默认就是 22,因此这行能够不输入
	Port 22
	# 本地私钥文件路径
	# 若是你在上一步有自定义了私钥的文件名,那么替换一下 id_rsa 就能够了
	IdentityFile /Users/Hades/.ssh/id_rsa
复制代码

保存并退出,本地工做准备就绪。ui

接着登陆远程服务器,完成相对应的设置。

打开远程服务器上的 ssd 服务配置文件:

$ vim /etc/ssh/sshd_config
复制代码

找到如下三项,并确保以下内容:

RSAAuthentication yes     # RSA认证
PubkeyAuthentication yes  # 公钥认证
AuthorizedKeysFile .ssh/authorized_keys  # 公钥认证文件路径
PermitRootLogin yes  # 容许 root 用户登陆
复制代码

若是有改动,则重启 sshd 服务:

$ systemctl restart sshd
# 或者
$ service sshd restart
复制代码

最后一步,将本地生成的公钥的文件内容,粘贴到远程服务器的 $HOME/.ssh/authorized_keys 文件中。这里要声明一点,若是你是要对 root 用户进行免密登陆,则 $HOME 应该为 /root,那若是是其余的普通用户,则为 /home/xxx

拷贝本地公钥文件的内容:

$ cat ~/.ssh/id_ras.pub
# 打印完成后,全选拷贝
复制代码

而后登陆远程服务器,打开公钥认证文件路径:

$ vim ~/.ssh/authorized_keys
复制代码

粘贴进刚才复制的内容,保存退出,并退出远程服务器的登陆。

如今试试再登陆远程服务器吧,不会在须要密码啦~

我就想一键搞定

完成上面的操做步骤后,貌似登陆服务器的时候还须要输入一串命令:

$ ssh root@xxx.xxx.xxx.xxx
复制代码

我懒啊,就想一键搞定怎么办?

若是你所使用的终端有所谓的设置「快捷键」,那么福音也就来了。

我用的是 Mac 上面的 iTerm2 终端神器,能够设置以下快捷键,之后我只须要按下 ⌃+⌘+1 就一键登陆上去了,效率提高得不是一丁半点。

既然那么懒了,那就再过度一点吧。

我平时登陆服务器,也就只去固定的路径查看下日志什么的,能不能让我一登陆就达到指定的目录路径呢?省得我还要记住一串的路径,万一忘了,那就费事儿了。

有的。

登陆远程服务器,打开 bash 终端交互的我的设置文件:

$ vim ~/.bash_profile
复制代码

追加一句:

cd /path/tp/dest/dir
复制代码

完成。

我连服务器都不想登陆了

论懒癌的最高境界,「不是花最少的力气去作一件事,是我压根就不去作」!

是的,万一咱们只须要在服务器上执行一条命令呢?我还大老远地整那么多事情干啥?

来吧,一条命令搞定它:

$ ssh root@xxx.xxx.xxx.xxx pwd

$ ssh root@xxx.xxx.xxx.xxx cd /services/logs && tail error.log -n 100
复制代码

是的,ssh 登陆命令后面,跟你要执行的命令便可。


微信公众号 只想今晚早点回家跑个步~

相关文章
相关标签/搜索