puttygen으로 만든 ssh 암호화키 openssh key로 export



공유기 정보를 home assistant의 command_line센서로 만들려다 부딪힌 문제와 구글링해 찾은 해결책들.

먼저 putty에서 만든 암호화키를 ha서버의 /config 디렉토리에 복사후 아래 커맨드로 ha서버에서 공유기로 접속하면서 생긴 에러. 

ssh -i /config/id_rsa.ppk -p 2222 -o StrictHostKeyChecking=no root@192.168.1.1 df


bad permissions: ignore key: 이 에러는 암호화키 퍼미션을 소유자 읽기전용으로 변경해주면 됨.
chmod 400 ./id_rsa.ppk

error in libcrypoto: 이 에러는 puttygen.exe에서 만든 암호화키를 openssh key로 변환해주면 해결.
변환방법은 puttygen.exe에서 Conversions/Import key로 암호화키를 불러들인 후 Export OpenSSH key를 해주고 만든 암호화 키를 ha서버에 복사해 준다.



command_line:
- sensor:
    name: 'OpenWrt CPU'
    unique_id: openwrt_cpu
    scan_interval: 300
    command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 top -d 1 -b -n2 | grep "CPU"|  awk '$1 == "CPU:" {sum += $2 + $4} END {print sum/2}'
    unit_of_measurement: '%'

- sensor:
    name: 'OpenWrt CPU Temp MAX'
    unique_id: openwrt_cpu_temp
    scan_interval: 300
    command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 cat /sys/class/thermal/thermal_zone*/temp | sort -rn | head -n 1
    unit_of_measurement: '°C'
    value_template: '{{value | multiply(0.001) }}'

- sensor:
    name: 'OpenWrt DISK'
    unique_id: openwrt_disk
    scan_interval: 300
    command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 df | grep overlay | awk '{printf ("%.0f\n",$3*100/($3+$4))}' | head -n 1
    unit_of_measurement: '%'

- sensor:
    name: 'OpenWrt Memory'
    unique_id: openwrt_memory
    scan_interval: 300
    command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 free -m | grep Mem | awk '{printf ("%.0f\n",$3*100/$2)}'
    unit_of_measurement: '%'

공유기의 luci-app-upnp와 command line으로 가져온 센서들.