文章目录
  1. 1. 问题1
    1. 1.1. 错误提示
    2. 1.2. 解决办法
  2. 2. 问题2
    1. 2.1. 错误提示
    2. 2.2. 解决办法

问题1

错误提示

今天在准备将新项目部署到阿里云上,在安装完成 Capistrano 后,执行部署操作cap production deploy时出现了错误提示。

提示显示:建立migration时,无法建立索引index_topics_on_excellent,原因是excellent栏位不存在。

但实际情况是model中excellent栏位是存在的。

解决办法

我看了我的migration文件,我在建立excellent栏位时,将建立索引写在了同一个migration中,但是分成2行写了。因此我怀疑,系统在建立迁移文件时,在执行到这个migration的时候,认为这个excellent栏位尚未建立,因此也就无法建立索引。

由于目前这个索引确实没有必要建立,所以我将建立索引的语句删除了,重新部署后没有出现问题。

问题2

如果想远程登录aliyun管理网站,除了输入密码之外,SSH 还可以用非对称加密(Public Key Encryption)的方式来做登入。

在非对称加密算法中,会有两把钥匙(key),一把叫做公钥(public key)、一把叫做密钥(private key)。

  • 透过公钥加密的密文,只有密钥能够解开
  • 透过密钥加密的密文,只有公钥能够解开

于是我们就可以用这个机制来做登入:首先我们把自己的公钥先放在服务器上,那么之后登入时,服务器会送一个乱数字符串给用户,用户用密钥加密后返回服务器,如果服务器可以用公钥解回来,就表示认证成功。

以下是设定的步骤,:

mkdir ~/.ssh

touch ~/.ssh/authorized_keys

回到本机电脑把公钥印出来,执行 cat ~/.ssh/id_rsa.pub 就会印在画面上

但是在执行到这一步时,我出现了错误

错误提示

错误显示,找不到相应的公钥文件。

这个原因我是知道的,因为我之前为了能在本地管理2个github账号,就建立了2套SSH登录。而且我还将相应的文件名改了,所以默认的~/.ssh/id_rsa.pub就不存在了。

解决办法

解决办法也很简单,新建一对密钥即可。

执行 ssh-keygen -t rsa 就会产生公钥 ~/.ssh/id_rsa.pub 以及密钥 ~/.ssh/id_rsa 这两个档案。

在提示存放密钥的文件名称时:填写 ~/.ssh/id_rsa ,注意路径要加上,但是不要加上.pub

请一直按 Enter,不需要设定 passphrse 密码(不然你每次用key都要输入一次密码很麻烦)。

本机 cat 公钥如下:

liuzheng@266 ⮀ ~/workspace/ChainClub ⮀ ⭠ ch46 ⮀ cat ~/.ssh/id_rsa.pub
1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCb6XUNJm0P3p3SMrqmE4XIP0tIAQW05vX4Gg6/Qt+yR0Xg/dmOp5CCeKd1zGDxJTxBCUX1z0pP/rsIlBdvmKFqfqcp4wEYL26FKJSWY9qTnSrdekTgKQM+rtmS3XnJM1T8B08W7ZQoK+D9bEgf8WtrhjUwyzBnlVlB0l1USxTzd/z5Su9xZi4DKjeHupgHOtdxcW9rpwVPtMCUrSII56v6/TYO5ID+tAnh86bFTbzOTe9R39l/9aM3ZyvZnz3b6bYQVvcrBxjrq5/H410tCLrsTlOPYaOWr23pAvrwGJYm8PzYT7ctDxDNAQxMs+VUwV47YtAt7dsWoqWlXND7cN13 liuzheng@266.local

公钥可以公开给别人没关系,密钥就千万要保管好喔。

然后回到远端服务器继续:

nano ~/.ssh/authorized_keys 把公钥贴上去

chmod 700 ~/.ssh

chmod 644 ~/.ssh/authorized_keys

这样就好了,你可以试试看再次登入就不用打密码了,太棒了!

不过这里还有个小问题,我的Github相应的ssh也有更改,去Github里面删除原有的公钥,替换为新的公钥,然后保存即可。这里要保证阿里云上和Github的公钥是相同的!

文章目录
  1. 1. 问题1
    1. 1.1. 错误提示
    2. 1.2. 解决办法
  2. 2. 问题2
    1. 2.1. 错误提示
    2. 2.2. 解决办法