开发过程中,使用Git有时候会遇到多次零碎的小提交,想要合并成一个提交记录,这里记录一下操作。
开发过程中,使用Git有时候会遇到多次零碎的小提交,想要合并成一个提交记录,这里记录一下操作。
SSH(Secure Shell)是一种用于在不安全网络中进行操作网络服务的加密网络协议,提供两台电脑不安全网络间进行认证和加密数据传输。主要用于网络管理员进行远程管理使用,允许用户远程登录、远程执行命令和拷贝文件。
1995, 芬兰赫尔辛基科技大学的一个研究员Tatu Ylönen设计了第一版的协议(称为SSH-1),并发布了一版免费的软件。
1995的12月,Ylönen成立了一家公司SSH Communications Security来推广和开发SSH,并将后续的版本转为商业软件。
SSH-2修订版在2006年确认为标准,在安全和特性上都胜过SSH-1,并和SSH-1不兼容。
一个区分向下兼容的命名方法,指支持2.0和之前版本的一个协议版本。
1999年Björn Grönvall基于原始的SSH v1.2.12开源版本开发了OSSH,不久OpenBSD分叉了OSSH并创建了OpenSSH,此后OpenSSH继续维护广为移植,OSSH被淘汰。
OpenSSH 7.6版本移除了对SSH-1的支持。
SSH可以在多平台下有多种应用场景,包括大部分的Unix变种(GNU/Linux,BSD包括MacOS,Solaris)和Windows。
使用场景:
Unix和Linux系统中基本都包含ssh
命令,这个命令启动SSH客户端用以在远程机器和SSH服务端建立安全的连接,通常使用的是OpenSSH SSH Client。
登录
1 | ssh -p port_number remote_username@remote_host |
-p port_number
指定端口号,如果是默认22端口,可省略remote_username
为登录用户名remote_host
: 主机名,可以是域名或者IP如果是首次连接该远程机器,则会出现以下的提示信息:
1 | The authenticity of host 'example.com' cannot be established. |
选择yes
继续后,将会添加这个服务器到你的已知主机列表中~/.ssh/known_hosts
:
1 | Warning: Permanently added 'example.com' (DSA) to the list of known hosts. |
每台服务器都有一个key,上述的问题来确认和保存主机key,在下一次连接服务器时,会确认是否为同一台服务器。连接建立后,用户即认证成功。正常情况下,命令会要求用户输入密码。
退出
使用exit
命令退出远程会话
1 | exit |
执行远程命令
ssh也可以用于不登录服务器直接远程执行命令
1 | ssh host command |
X11转发
1 | ssh -X remote_host |
启动ssh服务,服务端ssh的配置在进阶中讲解
1 | sudo service ssh start |
通过登录ssh时会使用每次输入密码的方式,不过使用SSH的key更方便和安全,配置key稍微麻烦一点,后续就是一劳永逸的事情,直接一条命令或者一个别名直接登录。
创建SSH Key
在你的客户端电脑创建ssh key:
1 | ssh-keygen -t rsa |
按回车确认,你的key会被创建在~/.ssh/id_rsa.pub和~/.ssh/id_rsa
。
切换到.ssh
目录:
1 | cd ~/.ssh |
查看各文件的权限:
1 | ls -l |
输出结果如下:
1 | -rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys |
id_rsa
是仅文件拥有者可读,需要保持私密;id_rsa_pub
可以被共享和读取。
传送公有Key到服务器
拷贝公有Key到服务器:
1 | ssh-copy-id remote_host |
这个命令会开启一个ssh会话,需要输入密码进行认证;输入密码成功后,将会拷贝公有Key到服务器的认证Key文件中,后续将允许不输入密码登录。
服务端ssh配置是指配置sshd服务,默认情况,配置文件位于/etc/ssh/sshd_config
。
备份当前配置文件
1 | sudo cp /etc/ssh/sshd_config{,.bak} |
使用编辑器打开文件
1 | sudo vi /etc/ssh/sshd_config |
修改部分配置项
1 | # 修改端口号,默认为22,修改后客户端连接需要指定这里设置的端口 |
重启服务
上述设置保存后,需要重启服务才能生效
1 | sudo service ssh restart |
检查配置修改是否有效,在修改配置的时候尽量保证有个用户已经登录连接,帮助设置有误时进行修改。
如果你可以安装了ssh key,并且可以通过key免密登录,否则关闭密码认证后将无法登录远程服务器。
使用管理员权限打开配置文件
1 | sudo vi /etc/ssh/sshd_config |
修改配置文件,关闭密码认证
1 | PasswordAuthentication no |
有两个配置需要确认设置正确
1 | PubkeyAuthentication yes |
重启服务
1 | sudo service ssh restart |
此时,密码认证将不可用,你的服务器将只能通过ssh key进行登录。
SSH的工作时通过客户端程序连接到ssh服务器。
基于Key认证的方式,需要一对Key,一个私有Key和一个公有Key。
私有Key保存在客户端电脑,并且要是安全和私密的。
公有Key放置在任何你想访问的服务器上。
当你通过键对访问时,服务器会使用公有Key创建一个消息给客户端,并且只有通过私有Key才能读取;接着,客户端发送合适的响应给服务端并认证。
本次升级更新了如下内容:
Hexo的版本,从3.3.8升级到3.7.1版本,没有重大的破坏性变更。
主题Next版本,从5.1升级到v6.4.2版本,两者间有不兼容的地方,配置需要重新配;另外,新版本的主题支持更多的特性。
有关Next主题的升级文档,这里给一下官方的指南,希望帮助有需要的朋友
升级过程中需要注意的是,v6和v5重大的变更之一是,插件依赖需要自己手动安装。
例如,假设你想要在你的站点中使用 fancybox 插件,请进入 NexT 配置文件,你会看到如下内容:
1 | # Fancybox |
升级愉快!感谢next团队的贡献,v6带来了很多很棒的特性。
git config --system
:文件位置/etc/gitconfig
,系统级配置git config --global
:文件位置~/.gitconfig
或 ~/.config/git/config
文件,当前用户配置.git/config
:文件位置仓库.git/config
,当前仓库配置
1 | git config --global user.name "John Doe" |
git config --list
:列出所有 Git 当时能找到的配置
1 | git help <verb> |
这篇文章第一版是在2018年写的,当时写的比较粗糙也没有配图,近期重新翻新并增加一些之前没有提到的功能点,主要作为自己平时的使用指南,如果能帮助到其他人那是更好的。
近期搭建一个Wordpress站点,前期的准备工作完成,登录界面登录成功后,
显示的页面为403,禁止访问。
在网上搜索后,发现问题在于权限的问题,主要是页面文件所在的文件夹的访问
权限。由于nginx默认使用的用户权限无法访问页面的文件,导致报的403。
解决方法:
1、打开nginx.conf文件修改启动用户
1 | $ vim /user/local/nginx/conf/nginx.conf |
修改开头的用户,
#user nobody
改为
user nginx web;
或者其他用户,格式为用户[空格]用户组
2、重新启动nginx
1 | $ /user/local/nginx/sbin/nginx -s reload |
此时,重新测试,应该就可以访问成功了。
配置密钥可使用户免密ssh方式登录服务器。
配置方法:
1 | $ ssh-keygen |
此处可选择生成密钥的文件路径,默认为~/.ssh/id_rsa
密码为可选。
1 | $ ssh-copy-id -i ~/.ssh/id_rsa.pub xxx@host |
手动拷贝id_rsa.pub到服务器上,并收到添加认证文件。
1 | $ cat id_rsa.pub >> ~/.ssh/authorized_keys |
配置服务器上/etc/ssh/sshd_config文件,修改以下配置项
1 | RSAAuthentication yes |
修改后,重启sshd服务,根据不同的系统使用相应命令
直接登录
1 | $ ssh user@host |
如果配置成功,则不需要密码直接登录。
主要原因在于服务器上认证文件及所在目录的权限问题
详情排查步骤可查看文章配置ssh公钥登录提示还是输入密码
解决方法:
1 | $ chmod 755 ~/home/xxxuser |
这里罗列一些关于学习Linux的基础准备工作,来自《鸟哥的私房菜》,近期准备重新刷一遍,巩固一下Linux的知识和操作。
了解计算机的概论,包括一些基本理论知识;以及计算机相关的硬件知识,包括计算机的组成。
选择一款Linux的发行版并尝试安装。
了解用户、用户组、权限、程序等概念。
所有Unix Like的系统均安装了vi编辑器,平时操作修改配置文件都可能使用到。
玩命令行必须要经历的一步,主要包括“正则表达式”、“管道命令”与“数据流重定向”。
玩Linux的时候,免不了要自己安装驱动程序或者额外的软件,Tarball/rpm/dpkg等软件包管理工具的使用就很重要了。
“IP”、“路由”等概念需要了解,以及再进一步的TCP/IP协议。